有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在片段中获得共享首选项

我对Android fragment中的共享偏好有一些问题。在我的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中,在点击Accept按钮时,我将共享首选项更新为false:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
            SharedPreferences.Editor editor = prefs.edit();
            editor.putBoolean("show_eula_key", false).commit();
            dismiss();

然而,即使我选择了接受并重新启动了应用程序,当我重新启动应用程序时,它仍然会打开片段A。有什么想法吗

谢谢


共 (5) 个答案

  1. # 1 楼答案

    用这样的东西

    editor.putBoolean("show_eula_key", false).apply();
    
  2. # 2 楼答案

    将第二个代码更改为

    SharedPreferences prefs = getContext().getSharedPreferences("EULA_SHARED_PREFERENCE", MODE_PRIVATE);
    SharedPreferences.Editor editor = prefs.edit();
    editor.putBoolean("show_eula_key", false).apply();
    
  3. # 3 楼答案

    您使用两个不同的文件:

    SharedPreferences prefs = getApplicationContext().getSharedPreferences("EULA_SHARED_PREFERENCE", MODE_PRIVATE);

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());

    你必须同时使用相同的方法。(提示:活动就是一个上下文)

  4. # 4 楼答案

    问题是,当您从eula_共享_首选项中获取show_eula_密钥并保存到默认首选项中时,您必须准确地保存首选项中的数据

  5. # 5 楼答案

    在片段A中

    SharedPreferences prefs =getActivity().getSharedPreferences("EULA_SHARED_PREFERENCE", MODE_PRIVATE);
            prefs.edit().putBoolean("show_eula_key",false).apply();