[英]Getting Shared Preference in a Fragment
I was having some problem with shared preference in Android fragment. 我在Android片段中的共享首选项有问题。 In my MainActivity onLoad, I am checking the shared preference, if it is true, then I open up fragment A.
在我的MainActivity onLoad中,我正在检查共享首选项,如果为true,则打开片段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);
}
In my fragment A, upon Accept button onClick, I update the shared preference to false: 在片段A中,在接受按钮onClick时,我将共享首选项更新为false:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("show_eula_key", false).commit();
dismiss();
However, even though I selected accepted and restarted the app, when I relaunch the app, it keeps open up the fragment A. Any ideas? 但是,即使我选择接受并重新启动该应用程序,但在重新启动该应用程序时,它仍会打开片段A。有什么想法吗?
Thanks! 谢谢!
You use two different files: 您使用两个不同的文件:
SharedPreferences prefs = getApplicationContext().getSharedPreferences("EULA_SHARED_PREFERENCE", MODE_PRIVATE);
SharedPreferences prefs = getApplicationContext()。getSharedPreferences(“ EULA_SHARED_PREFERENCE”,MODE_PRIVATE);
and 和
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
You must use the same at both. 您必须同时使用两者。 (tip: an Activity is a context)
(提示:活动是上下文)
用这样的东西
editor.putBoolean("show_eula_key", false).apply();
问题是您正在从EULA_SHARED_PREFERENCE获取show_eula_key并保存默认首选项,您必须准确地保存来自首选项的数据
Change your second code to 将第二个代码更改为
SharedPreferences prefs = getContext().getSharedPreferences("EULA_SHARED_PREFERENCE", MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("show_eula_key", false).apply();
In Fragment A 在片段A中
SharedPreferences prefs =getActivity().getSharedPreferences("EULA_SHARED_PREFERENCE", MODE_PRIVATE);
prefs.edit().putBoolean("show_eula_key",false).apply();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.