Java DialogFragment中的SharedReferences NullPointerException
在DialogFragment中使用SharedReference时遇到一些问题。我一直在Java DialogFragment中的SharedReferences NullPointerException,java,android,fragment,sharedpreferences,dialogfragment,Java,Android,Fragment,Sharedpreferences,Dialogfragment,在DialogFragment中使用SharedReference时遇到一些问题。我一直在SharedReferences=getActivity()行中获取NullPointerException(“pref”,0)。 这是五月的基本代码 public class ADialogFragment extends DialogFragment implements DialogInterface.OnClickListener { SharedPreferences sharedPref
SharedReferences=getActivity()行中获取NullPointerException(“pref”,0)代码>。
这是五月的基本代码
public class ADialogFragment extends DialogFragment implements DialogInterface.OnClickListener {
SharedPreferences sharedPreferences;
public ADialogFragment(int a) {
sharedPreferences = getActivity().getSharedPreferences("pref", 0);
if (a == 0) {
saveToPref(0);
} else if (a == 1) {
saveToPref(1);
} else saveToPref(2);
}
private void saveToPref(int itemInt) {
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt(getString(R.string.item), itemInt);
editor.commit();
}
public Dialog onCreateDialog(Bundle savedInstanceState) {
...
}
}
如何修复它?方法GetSharedReferences是上下文对象的一个方法,因此仅从片段调用GetSharedReferences将不起作用
所以你需要像下面这样做
sharedPreferences = this.getActivity().getSharedPreferences("pref", 0);
GetSharedReferences方法是上下文对象的一个方法,因此仅从片段调用GetSharedReferences将不起作用
所以你需要像下面这样做
sharedPreferences = this.getActivity().getSharedPreferences("pref", 0);
在片段构造函数中调用getActivity()
太早,它返回null。片段仅附加到片段生命周期中onAttach()
或更高版本中的活动
将需要共享首选项的代码移动到生命周期的稍后阶段
还要注意的是,片段不应该有接受参数的构造函数。使用setArguments()
将参数传递给片段。您在片段构造函数中调用getActivity()
太早,它返回null。片段仅附加到片段生命周期中onAttach()
或更高版本中的活动
将需要共享首选项的代码移动到生命周期的稍后阶段
还要注意的是,片段不应该有接受参数的构造函数。使用setArguments()
将参数传递给片段。请学习片段生命周期。。。当片段未连接到它时,您无法获得活动…您可以发布stacktrace吗。这让其他人更容易回答。请学习。。。当片段未连接到它时,您无法获得活动…您可以发布stacktrace吗。这让其他人更容易回答。但它仍然不起作用。@Selvin:可能是你太聪明了,而我没有。它仍然不起作用。@Selvin:可能是你太聪明了,而我没有。谢谢你详细而翔实的回答。我试试你的建议.谢谢你详细而翔实的回答。我试试你的建议。