我在Android片段中遇到共享偏好问题。在我的MainActivity onLoad中,我正在检查共享首选项,如果是,则打开片段A.
SharedPreferences prefs = getApplicationContext().getSharedPreferences("EULA_SHARED_PREFERENCE", MODE_PRIVATE);
boolean status = prefs.getBoolean("show_eula_key", false);
if(status == true){
EulaFragment eulaFragment = new EulaFragment();
eulaFragment.show(getSupportFragmentManager(), null);
}
在我的片段A中,在onClick按钮上,我将共享首选项更新为false:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("show_eula_key", false).commit();
dismiss();
然而,即使我选择接受并重新启动应用程序,当我重新启动应用程序时,它会一直打开片段A.任何想法?
谢谢!
答案 0 :(得分:1)
您使用两个不同的文件:
SharedPreferences prefs = getApplicationContext()。getSharedPreferences(" EULA_SHARED_PREFERENCE",MODE_PRIVATE);
和
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
你必须同时使用它们。 (提示:活动是一种背景)
答案 1 :(得分:0)
使用类似的东西
editor.putBoolean("show_eula_key", false).apply();
答案 2 :(得分:0)
问题是你从EULA_SHARED_PREFERENCE获得show_eula_key并保存默认首选项,你必须从偏好中获取数据,而不是保存它
答案 3 :(得分:0)
将您的第二个代码更改为
SharedPreferences prefs = getContext().getSharedPreferences("EULA_SHARED_PREFERENCE", MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("show_eula_key", false).apply();
答案 4 :(得分:0)
在片段A中
SharedPreferences prefs =getActivity().getSharedPreferences("EULA_SHARED_PREFERENCE", MODE_PRIVATE);
prefs.edit().putBoolean("show_eula_key",false).apply();