Android Java sharedPreferences
逻辑问题
我有一个可以登录和注销的应用。
我希望,当用户第一次下载应用程序时,它会注销。然后,当他使用按钮登录时,会保存一个 sharedPreference
值。现在,下次他打开应用程序时,它会自动让他登录。假设他注销然后关闭应用程序,所以现在当他打开应用程序时,它会把他注销。这就是大多数应用程序的运行方式。
我做了什么,在第一次 Activity 时我添加了这个
SharedPreferences SiggnedIn = getSharedPreferences("YesOrNo", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = SiggnedIn.edit();
editor.putBoolean("SiggnedIn?", false);
editor.commit();
然后当用户单击退出按钮时
SharedPreferences SiggnedIn = getSharedPreferences("YesOrNo", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = SiggnedIn.edit();
editor.putBoolean("SiggnedIn?", false);
editor.commit();
如果他点击登录
SharedPreferences SiggnedIn = getSharedPreferences("YesOrNo", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = SiggnedIn.edit();
editor.putBoolean("SiggnedIn?", true);
editor.commit();
最后,如果我有一个每秒更新所有内容的方法。
所以我在其中添加
SharedPreferences SiggnedIn = getSharedPreferences("YesOrNo", Activity.MODE_PRIVATE);
boolean myIntValue = SiggnedIn.getBoolean("SiggnedIn?", false);
if(myIntValue){
SignHimIn();
}
那是行不通的。
最佳答案
这不应该起作用,因为每次启动应用程序时,您都会将 SignggnedIn?
覆盖为 false。
SharedPreferences SiggnedIn = getSharedPreferences("YesOrNo", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = SiggnedIn.edit();
editor.putBoolean("SiggnedIn?", false);
editor.commit();
我建议使用 SharedPreferences
的另一个键来确定应用程序是否是首次启动。
SharedPreferences SiggnedIn = getSharedPreferences("YesOrNo", Activity.MODE_PRIVATE);
if (SiggnedIn.getBoolean("APP_LAUNCHED_FIRST_TIME", true)) {
SharedPreferences.Editor editor = SiggnedIn.edit();
editor.putBoolean("APP_LAUNCHED_FIRST_TIME", false);
editor.commit();
//For the first time, user should be signed out
editor.putBoolean("SiggnedIn?", false);
editor.commit();
}
然后在Activity
启动中,检查用户是否登录。
if (SiggnedIn.getBoolean("SiggnedIn?", false)) {
SignHimIn();
}
其余登录
和注销
逻辑正常。我假设您是通过单击 Button
来执行此操作的。
关于java - Android Java共享首选项逻辑问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24023893/