我不知道该怎么做了
似乎与android 3.0及更高版本一起工作正常,但是在每次启动应用程序时,它都会在android 2.3.3上再次询问用户名/密码。
我正在使用共享偏好设置。
以下是我保存偏好的方法:
SharedPreferences preferences = MyApplication.getAppContext().getSharedPreferences("athopbalance", MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("username", username).commit();
editor.putString("password", password).commit();
以下是我读它们的方式:
SharedPreferences preferences = MyApplication.getAppContext().getSharedPreferences("athopbalance", Context.MODE_PRIVATE);
String username = preferences.getString("username", "");
String password = preferences.getString("password", "");
我还尝试使用以下代码保存首选项:
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(MyApplication.getAppContext());
SharedPreferences.Editor editor = preferences.edit();
editor.putString("username", username).commit();
editor.putString("password", password).commit();
用这段代码读取它们:
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(MyApplication.getAppContext());
String username = preferences.getString("username", "");
String password = preferences.getString("password", "");
但它也不起作用。
问题出在重新启动应用程序之前我可以看到它们仍然存在。但是,一旦我重新启动 - 我最终会得到"" (空字符串)用于用户名和""密码。
非常感谢任何想法
答案 0 :(得分:2)
public class MyApplication extends Application {
private static MyApplication instance;
@Override
public void onCreate() {
super.onCreate();
Log.d(TAG, "onCreate() called");
}
public MyApplication() {
super();
Log.d(TAG, "Constructor called");
instance = this;
}
public static MyApplication getApplication() {
if (instance == null) {
instance = new MyApplication();
}
return instance;
}
}
用法:
MyApplication.getApplication().getSharedPreferences(MY_PREFERENCES, Context.MODE_PRIVATE)
答案 1 :(得分:1)
试试这个:
SharedPreferences preferences = context.getSharedPreferences("YOUR_TAG", 0);
String username = preferences.getString("username", "");
String password = preferences.getString("password", "");
SharedPreferences.Editor editor = preferences.edit();
editor.putString("username", username).commit();
editor.putString("password", password).commit();
其中context是您应用的上下文:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context = this;
答案 2 :(得分:0)
我不确切知道发生了什么,但在我重新启动后,模拟器问题就消失了。
抱歉浪费你的时间
答案 3 :(得分:0)
您有两个选择:
在活动的生命周期内获取共享偏好值。
在.clear
.commit
醇>
见我的回答:
Android Persistent Checkable Menu in Custom Widget After Reboot Android