0

我創建了一個用戶必須輸入密碼(在本例中爲「test」)的登錄活動(代碼爲MainActivity),如果密碼正確,他們連接到SuccessActivity。在此之前一切正常。保存該用戶輸入的正確密碼(保持登錄狀態)

所以,現在我想保存用戶輸入正確的密碼。我這樣做有:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    final SharedPreferences sharedPreferences = getPreferences(this.MODE_PRIVATE); 
    final EditText editTextPassword = (EditText) findViewById(R.id.editTextPassword); 
    final Button buttonLogin = (Button) findViewById(R.id.buttonLogin); 

    buttonLogin.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if(editTextPassword.getText().toString().equals("test")) { 
       Log.d("LOGIN", "Passwort right!"); 
       SharedPreferences.Editor editor = sharedPreferences.edit(); 
       editor.putString(PREF_NAME, "logged"); 
       editor.commit(); 
       startActivity(new Intent(MainActivity.this, SuccessActivity.class)); 
      } 
      else { 
       Toast.makeText(MainActivity.this, 
         "Passwort wrong!", Toast.LENGTH_LONG).show(); 
      } 
     } 
    }); 

在此之後,我希望用戶,如果他回去或重新啓動應用程序,自動打開SuccessActivity。我這樣做:

String Login = sharedPreferences.getString(PREF_NAME, ""); 
    if(Login.equals("test")) { 
     Intent intent = new Intent(this, SuccessActivity.class); 
     startActivity(intent); 
    } 
} 

但是,我認爲你已經可以認爲它,它不工作。如果用戶輸入的密碼正確,SucessActivity將打開,但如果用戶再次打開該應用程序,則必須再次輸入密碼。

我是新來的SharedPreferences

回答

1

這是一個簡單的修復。讓我們來看看你在SharedPreferences中輸入的內容。

SharedPreferences.Editor editor = sharedPreferences.edit(); 
editor.putString(PREF_NAME, "logged"); 
editor.commit(); 

這將把字符串「記錄」到首選項PREF_NAME

現在我們來看看您從SharedPreferences中讀取的內容。

String Login = sharedPreferences.getString(PREF_NAME, ""); 
if(Login.equals("test")) { 

} 

正如你所看到的,你正在尋找的偏好PREF_NAME並檢查它,它等於字符串「測試」。

你的問題是「測試」不等於「記錄」。

+0

謝謝!現在我必須找出如何在註銷中調用anthor活動中的首選項... –

0

您在SharedPreference中保存了錯誤的值。您需要在onClick()方法中更改您的代碼,如下所示。

SharedPreferences.Editor editor = sharedPreferences.edit(); 
editor.putString(PREF_NAME, "test"); 
editor.commit(); 
startActivity(new Intent(MainActivity.this, SuccessActivity.class));