我是新來的android,這個問題是一個轉發,因爲我無法更新以前的一些原因。 我能夠在登錄頁面中創建記住我的功能,當我重新啓動我的應用時,用戶名和密碼字段已經填滿,但我必須點擊登錄按鈕才能進入其他活動。登錄屏幕記住功能
如何編碼,如果我想直接加載另一個活動,如果記得我複選框是真實的,而不是再次點擊登錄按鈕時,我再次加載我的應用程序。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b = (Button)findViewById(R.id.Button01);
et = (EditText)findViewById(R.id.username);
pass= (EditText)findViewById(R.id.password);
register = (TextView)findViewById(R.id.register);
saveLoginCheckBox = (CheckBox)findViewById(R.id.remember);
loginPreferences = getSharedPreferences("loginPrefs", MODE_PRIVATE);
loginPrefsEditor = loginPreferences.edit();
saveLogin = loginPreferences.getBoolean("saveLogin", false);
if (saveLogin == true) {
//uname = et.getText().toString();
// pwd = pass.getText().toString();
et.setText(loginPreferences.getString("uname", ""));
pass.setText(loginPreferences.getString("pwd", ""));
saveLoginCheckBox.setChecked(true);
login();
// finish();
}
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dialog = ProgressDialog.show(MainActivity.this, "",
"Validating user...", true);
new Thread(new Runnable() {
public void run() {
uname = et.getText().toString();
pwd = pass.getText().toString();
if (saveLoginCheckBox.isChecked()) {
loginPrefsEditor.putBoolean("saveLogin", true);
loginPrefsEditor.putString("uname", uname);
loginPrefsEditor.putString("pwd", pwd);
loginPrefsEditor.commit();
} else {
loginPrefsEditor.clear();
loginPrefsEditor.commit();
}
login();
}
}).start();
}
});
register.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//dialog = ProgressDialog.show(MainActivity.this, "",
// "Loading...", true);
new Thread(new Runnable(){
public void run(){
register();
}
}).start();
}
});
}
void register(){
startActivity(new Intent(MainActivity.this,RegisterPage.class));
}
void login(){
try{
httpclient=new DefaultHttpClient();
httppost= new HttpPost("http://192.168.10.71/login.php"); // make sure the url is correct.
//add your data
nameValuePairs = new ArrayList<NameValuePair>(2);
// Always use the same variable name for posting i.e the android side variable name and php side variable name should be similar,
nameValuePairs.add(new BasicNameValuePair("username",et.getText().toString())); // $Edittext_value = $_POST['Edittext_value'];
nameValuePairs.add(new BasicNameValuePair("password",pass.getText().toString()));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
//Execute HTTP Post Request
// response=httpclient.execute(httppost);
ResponseHandler<String> responseHandler = new BasicResponseHandler();
final String response = httpclient.execute(httppost, responseHandler);
// System.out.println("Response : " + response);
/* runOnUiThread(new Runnable() {
public void run() {
tv.setText(response + et.getText());
dialog.dismiss();
}
});
*/
if(response.equalsIgnoreCase("Doctor Found")){
runOnUiThread(new Runnable() {
public void run() {
//tv.setText(response);
dialog.dismiss();
Toast.makeText(MainActivity.this,"Hello Doctor " + et.getText(), Toast.LENGTH_SHORT).show();
}
});
startActivity(new Intent(MainActivity.this, DoctorPage.class));
}
else if(response.equalsIgnoreCase("Nurse Found")){
runOnUiThread(new Runnable() {
public void run() {
//tv.setText(response);
dialog.dismiss();
Toast.makeText(MainActivity.this,"Hello Nurse " + et.getText(), Toast.LENGTH_SHORT).show();
}
});
startActivity(new Intent(MainActivity.this, NursePage.class));
}
else{
showAlert();
dialog.dismiss();
}
}catch(Exception e){
dialog.dismiss();
System.out.println("Exception : " + e.getMessage());
}
}
我得到空指針異常。如果選中記住我框,我無法切換到其他活動。這是堆棧跟蹤。
05-21 04:13:02.284: E/AndroidRuntime(3397): FATAL EXCEPTION: main
05-21 04:13:02.284: E/AndroidRuntime(3397): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.logincheck/com.example.logincheck.MainActivity}: java.lang.NullPointerException
05-21 04:13:02.284: E/AndroidRuntime(3397): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
05-21 04:13:02.284: E/AndroidRuntime(3397): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
05-21 04:13:02.284: E/AndroidRuntime(3397): at android.app.ActivityThread.access$600(ActivityThread.java:141)
05-21 04:13:02.284: E/AndroidRuntime(3397): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
05-21 04:13:02.284: E/AndroidRuntime(3397): at android.os.Handler.dispatchMessage(Handler.java:99)
05-21 04:13:02.284: E/AndroidRuntime(3397): at android.os.Looper.loop(Looper.java:137)
05-21 04:13:02.284: E/AndroidRuntime(3397): at android.app.ActivityThread.main(ActivityThread.java:5041)
05-21 04:13:02.284: E/AndroidRuntime(3397): at java.lang.reflect.Method.invokeNative(Native Method)
05-21 04:13:02.284: E/AndroidRuntime(3397): at java.lang.reflect.Method.invoke(Method.java:511)
05-21 04:13:02.284: E/AndroidRuntime(3397): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-21 04:13:02.284: E/AndroidRuntime(3397): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
05-21 04:13:02.284: E/AndroidRuntime(3397): at dalvik.system.NativeStart.main(Native Method)
05-21 04:13:02.284: E/AndroidRuntime(3397): Caused by: java.lang.NullPointerException
05-21 04:13:02.284: E/AndroidRuntime(3397): at com.example.logincheck.MainActivity.login(MainActivity.java:182)
05-21 04:13:02.284: E/AndroidRuntime(3397): at com.example.logincheck.MainActivity.onCreate(MainActivity.java:68)
05-21 04:13:02.284: E/AndroidRuntime(3397): at android.app.Activity.performCreate(Activity.java:5104)
05-21 04:13:02.284: E/AndroidRuntime(3397): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
05-21 04:13:02.284: E/AndroidRuntime(3397): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
05-21 04:13:02.284: E/AndroidRuntime(3397): ... 11 more
注意:我想要我們在facebook上的東西。輸入用戶名,密碼並檢查記住我複選框,如果我再次打開Facebook頁面,然後我的主頁將出現,而不是歡迎屏幕,我只需點擊登錄按鈕。
該行在哪裏:'com.example.logincheck.MainActivity.login(MainActivity.java:182)' – mromer
login()在代碼中實現,它的derere在register()之後。 –
您能否在上面的代碼中標記第182行,因爲您只發布了部分活動代碼,所以我們無法跟蹤該行。 – Oam