簡體   English   中英

在片段中獲取共享首選項

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM