Android 当应用程序重新启动时,共享首选项值将再次显示
我有两个活动..在第一个Loginactivity中,如果单击按钮,则我将在sahred Preferences中存储值;在第二个活动中,即第一个屏幕中,如果单击按钮,则我将退出按钮,然后重新移动存储的sharedpreferences值 ..退出应用程序并重新启动应用程序后,如果我打印,则打印共享首选项存储的值…如果我注销,则完全删除这些值Android 当应用程序重新启动时,共享首选项值将再次显示,android,sharedpreferences,Android,Sharedpreferences,我有两个活动..在第一个Loginactivity中,如果单击按钮,则我将在sahred Preferences中存储值;在第二个活动中,即第一个屏幕中,如果单击按钮,则我将退出按钮,然后重新移动存储的sharedpreferences值 ..退出应用程序并重新启动应用程序后,如果我打印,则打印共享首选项存储的值…如果我注销,则完全删除这些值 public class LoginActivity extends ActionBarActivity { User myApplication;
public class LoginActivity extends ActionBarActivity {
User myApplication;
EditText username,passwordField;
Button login;
CheckBox check;
SharedPreferences settings;
SharedPreferences.Editor editor;
String userStored;
String passwordStored;
boolean checked =false;
boolean checkboxvalue;
public static final String PREFS_NAME = "Shared_File";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
login.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
settings = getSharedPreferences(PREFS_NAME,Context.MODE_PRIVATE);
editor = settings.edit();
editor.putString("User_Shared", username.getText().toString());
editor.putString("Pass_Shared", passwordField.getText().toString());
//editor.putBoolean("Checkbox_Click", true);
editor.commit();
userStored = settings.getString("User_Shared",null);
passwordStored =settings.getString("Pass_Shared", null);
System.out.println("userStored :::" +userStored + " :::::::pasword :::::::" +passwordStored );
Intent intent = new Intent(getApplicationContext(),FirstScreen.class);
startActivity(intent);
}
}
});
}
}
public class FirstScreen extends Activity {
Button logout;
SharedPreferences settings;
SharedPreferences.Editor editor;
public static final String PREFS_NAME = "Shared_File";
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.firstscreen);
logout =(Button)findViewById(R.id.logout);
logout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
settings =getSharedPreferences(PREFS_NAME,Context.MODE_PRIVATE);
editor = settings.edit();
try {
editor.remove("User_Shared");
editor.remove("Pass_Shared");
editor.clear();
editor.commit();
}
catch (NullPointerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
//intent.putExtra("Logout", logout);
startActivity(intent);
}
});
}
}
这与活动生命周期有关。您应该将与SharedReferences相关的代码放在onPause方法中。代码的错误在于它将键值对存储在SharedReferences对象中,但当您按下back按钮或活动退出活动状态时,键值对将被擦除。
所以,试试我的建议。祝你好运,伙计。希望,这是有益的。你说起来很容易
editor.putString("User_Shared", null);
一切都会正常工作。共享首选项用于持久化数据,除非手动删除,否则不会删除。什么是Logcat输出?是的。。。如果我注销,它必须被永久删除…kiran和123456假设…如果我使用此值登录并注销,则字段必须为空..如果再次打开应用程序,我将获得kiran和123456..必须为空。如果按下注销,值将被删除,否则即使重新启动应用程序,它也将保留值。您可以删除活动的onStop方法中的值。我必须在登录时存储用户输入的值,而在注销时我必须删除…我知道:登录时您已经将代码编辑器放入了。putStringUser_Shared,username.getText.toString;editor.putStringPass\u共享,passwordField.getText.toString;现在,当您单击“注销”按钮时,将null放入SharedRef中,下次打开应用程序时,您将检查凭据中的null,如果为null,则将用户带到登录屏幕