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));