繁体   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