[英]Getting Shared Preference in a Fragment
我在Android片段中的共享首選項有問題。 在我的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);
}
在片段A中,在接受按鈕onClick時,我將共享首選項更新為false:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("show_eula_key", false).commit();
dismiss();
但是,即使我選擇接受並重新啟動該應用程序,但在重新啟動該應用程序時,它仍會打開片段A。有什么想法嗎?
謝謝!
您使用兩個不同的文件:
SharedPreferences prefs = getApplicationContext()。getSharedPreferences(“ EULA_SHARED_PREFERENCE”,MODE_PRIVATE);
和
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
您必須同時使用兩者。 (提示:活動是上下文)
用這樣的東西
editor.putBoolean("show_eula_key", false).apply();
問題是您正在從EULA_SHARED_PREFERENCE獲取show_eula_key並保存默認首選項,您必須准確地保存來自首選項的數據
將第二個代碼更改為
SharedPreferences prefs = getContext().getSharedPreferences("EULA_SHARED_PREFERENCE", MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("show_eula_key", false).apply();
在片段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.