我正在尝试使用SharedPreferences
存储一些数据
存储数据的方法:
public void storeSharedPreferences(String string) {
SharedPreferences sharedPreferences = getSharedPreferences("DATA",MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("FRAGMENT",string);
editor.apply();
}
获取数据的方法:
public String getSharedPreferences() {
SharedPreferences sharedPreferences = getSharedPreferences("DATA",MODE_PRIVATE);
String string = sharedPreferences.getString("FRAGMENT","ONE");
return string;
}
片段一和二的方法:
public void buttonSelect(String select) {
if (select == "ONE") {
storeSharedPreferences("ONE");
fragment = new OneFragment();
fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.frame_process, fragment, "OneFragment").addToBackStack(null).commit();
}
if (select == "TWO") {
storeSharedPreferences("TWO");
fragment = new TwoFragment();
fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.frame_process, fragment, "TwoFragment").addToBackStack(null).commit();
}
}
然后我首先调用此方法
buttonSelect(getSharedPreferences());
一切都很好,例如当用户位于片段2中并退出应用程序时
下次将从片段2开始
但是问题是您下次使用应用程序通过菜单关闭应用程序(按菜单按钮并清除所有应用程序)时,什么也没发生,而且似乎从未调用过此方法
buttonSelect(getSharedPreferences());
我该怎么办? 谢谢
答案 0 :(得分:1)
最初,使用editor.commit();
代替editor.apply();
接下来,逻辑可能是这样的:
buttonSelect
buttonSelect
将加载特定的片段。注意:请不要忘记在buttonSelect
或onCreate()
上启动应用程序时在活动中调用方法onStart
哦,我完全忘记了,Java中的字符串比较应该通过string.equals()函数完成,而不是通过double equals