Java 在片段中获取共享首选项

Java 在片段中获取共享首选项,java,android,sharedpreferences,Java,Android,Sharedpreferences,我对Android fragment中的共享偏好有一些问题。在我的MainActivity onLoad中,我正在检查共享首选项,如果它是真的,那么我打开片段A SharedPreferences prefs = getApplicationContext().getSharedPreferences("EULA_SHARED_PREFERENCE", MODE_PRIVATE); boolean status = prefs.getBoolean("show_eula_key", fa

我对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。有什么想法吗


谢谢

您使用两个不同的文件:

SharedReferences prefs=getApplicationContext().GetSharedReferences(“EULA\U共享\U首选项”,模式\U私有)

SharedReferences prefs=PreferenceManager.GetDefaultSharedReferences(getActivity())


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

使用类似的方法

editor.putBoolean("show_eula_key", false).apply();

问题是,您从eula_共享_首选项中获取show_eula_密钥并保存在默认首选项中,您必须准确地保存首选项中的数据,将第二个代码更改为

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

我怎样才能使它成为同一个文件?一个是活动,一个是片段。我试图使用fragment中的第一个方法,但它向我抛出错误消息it is a fragment。我发现无法解析getApplicationContext()错误,因为@JonasLochmann说您应该使用getContext(),它在fragmentTo Refined use fragment中可用。getActivity()您将获得引用它是一个片段,虽然是的,这就是我们使用“getContext()”的原因。请查收edit@guest176969如果使用stackoverflow应用程序并在刷新后发布收集的所有答案,则可以将其标记为正确答案。我的错