Java 在片段中获取共享首选项
我对Android fragment中的共享偏好有一些问题。在我的MainActivity onLoad中,我正在检查共享首选项,如果它是真的,那么我打开片段AJava 在片段中获取共享首选项,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
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应用程序并在刷新后发布收集的所有答案,则可以将其标记为正确答案。我的错