Android:旋转时对话框中出现 NullPointerException

标签 android rotation nullpointerexception

很抱歉,如果之前有人问过这个问题,但我找不到针对我的具体情况的答案。也很抱歉我是新人并且有点愚蠢。

问题: 我正在显示来自 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/

相关文章:

java - 保存不同 Activity 的数据

android - java.lang.IllegalArgumentException : Device credential not supported with crypto 异常

android - 从适配器内的 View 中删除项目

internet-explorer - youtube 播放器上的 CSS3 旋转在 IE FF 上不起作用

java - 什么是NullPointerException,我该如何解决?

android - 从 NFC 标签读取数据 (IsoDep)

swift - 停止无限旋转图像的正确方法?以及如何实现 removeAllAnimations?

python - Python、Tkinter 中的旋转线

java - 什么是 NullPointerException,我该如何解决?

android - fragment 中的单选按钮空指针执行