在片段中获取共享偏好

时间:2018-06-12 08:01:17

标签: java android sharedpreferences

我在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.任何想法?

谢谢!

5 个答案:

答案 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();