很抱歉,如果之前有人问过这个问题,但我找不到针对我的具体情况的答案。也很抱歉我是新人并且有点愚蠢。
问题: 我正在显示来自 fragment 的对话框,并在构造函数方法中传递上下文,因为我需要对话框中的上下文来注册广播接收器等。
DialogFragment fragmentDialog = MyDialog.myConstructor(getActivity());
fragmentDialog.show(getFragmentManager(), "dialog");
然后在 MyDialog 类中,我将上下文存储在实例变量中。 旋转设备时会出现问题,当我尝试在对话框中再次使用上下文时,会出现 nullPointerException。
可以用一些简单的方法解决这个问题吗?
最佳答案
如果设备旋转,Activity 将被销毁并重新创建。因此,您传递给 Fragment 的 Context 指向已被销毁的 Activity。
您可以使用setRetainInstance(true)在你的 fragment 中。这样,您的 fragment 将在 Activity 重新创建后继续存在。
要解决 NPE,如果重新创建 Activity,您必须将 Context 传递给 Fragment。那么Context就属于新的Activity了。
事实上,如果没有这个更新,指向 Activity 的每一行代码(例如 getActivity() 或 getFragmentManager())都将导致 NPE。
关于Android:旋转时对话框中出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17867184/