横竖屏切换时,禁止activity重新创建,导致getActivity为null

2023-05-16

遇到的问题如下:

出现问题代码如下:


private AlertDialog.Builder glxssConnectionDialog(){
    if(getActivity()==null){
        return null;
    }
    final AlertDialog.Builder normalDialog = new AlertDialog.Builder(getActivity());
    normalDialog.setTitle(R.string.dialog_connection_title);
    normalDialog.setMessage(R.string.dialog_connection_message);
    normalDialog.setNeutralButton(R.string.dialog_connection_positiveButton,
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    CameraFragment.this.getActivity().finish();
                }
            });
    normalDialog.setCancelable(false);
    normalDialog.create();
    return normalDialog;
}  

代码问题如下:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources$Theme android.content.Context.getTheme()' on a null object reference
at android.app.AlertDialog.resolveDialogTheme(AlertDialog.java:225)
at android.app.AlertDialog$Builder.<init>(AlertDialog.java:459)
at com.llvision.app.CameraFragment.f(CameraFragment.java:1250)
at com.llvision.app.CameraFragment.x(CameraFragment.java:66)
at com.llvision.app.CameraFragment$10.handleMessage(CameraFragment.java:281)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:156)
at android.app.ActivityThread.main(ActivityThread.java:6595)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:942)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:832)

创建dialog时,获取到的getActivity为null,造成出现上述问题。

解决办法:

需要在manifest中<activity>标签中加入android:configChanges="keyboardHidden|orientation|screenSize"属性。

此属性的作用是横竖屏切换时,禁止activity重新创建,防止getActivity为null。创建dialog时,对getActivity做判null处理。

加入android:configChanges="keyboardHidden|orientation"属性,在低版本上,这个是可以起作用。在android 4.0 以上实际上这个是不起作用的。

必须要加上screenSize。

android:configChanges="keyboardHidden|orientation|screenSize"

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

横竖屏切换时,禁止activity重新创建,导致getActivity为null 的相关文章

随机推荐

  • Handler同步屏障

    一 消息机制之同步屏障 消息机制的同步屏障 xff0c 其实就是阻碍同步消息 xff0c 只让异步消息通过 而开启同步屏障的方法就是调用下面的方法 xff1a MessageQueue postSyncBarrier 源码如下 xff1a
  • view的绘制流程

    一 view树的绘制流程 measure gt layout gt draw measure 1 ViewGroup LayoutParams 指定部件的长宽 2 MeasureSpec 32位的int值 前两位代表模式 后30位测量规格的
  • Thread.join()

    3 1 用法 下源码里对这个方法的描述 Thread java Waits for this thread to die lt p gt An invocation of this method behaves in exactly the
  • android 源码编译 模拟器emulator启动

    Android源代码编译成功之后 xff0c 我们就可以运行它了 为了方便起见 xff0c 我们使用Android模拟器emulator来运行编译出来的Android源代码 执行以下命令来启动Android模拟器 xff1a USER 64
  • Android 源码 (AOSP) - 编译 ( 模拟器 )

    启动模拟器 emulator command not found 错误 你肯定是在没有导入环境的窗口执行 emulator 了 bash emulator command not found 这里要先导入环境 如下 build envset
  • android模拟器

    模拟器运行需要四个文件 xff0c 分别是 xff1a Linux Kernelsystem imguserdata imgramdisk img 上面我 lunch 命令时选择的是 aosp x86 eng xff0c 因此 linux
  • mac 7z命令

    压缩文件 xff1a 7z a Mina3 7z Mina3 mp4 查看压缩后的文件 xff1a 7z t Mina3 7z 解压 7z文件 xff1a 7z x Mina3 7z 解压时换个目录
  • nRF51822:Keil下载程序报错(Erro;Flash Download failed - "Cortex-M0")

    问题描述 今天在用keil软件下载程序时遇到这个问题 比较奇怪的是我下载之前的其他工程都没有问题 xff0c 可以正常 xff0c 重新开的以前的另一个样例工程下载测试就出现了这个问题 原因分析与解决办法 1 找攻略 在查看了J Link配
  • Linux远程桌面连接,Xmanager 5实现远程调用CentOS7图形化界面

    先说效果 xff0c 可以实现 在 Centos7 6 上的远程桌面操作 流畅度和Windows远程桌面差不多 背景 xff1a 大家都知道Centos的图形化比较鸡肋 xff0c 为什么要弄图形化呢 xff1f 在虚拟机管控里 xff0c
  • Mac电脑上没有允许任何来源选项的解决方法

    Mac电脑的安全设置没有允许任何来源的选项怎么办 xff1f 1 在终端输入下方的命令 xff0c 按回车 xff1a sudo spctl master disable 2 输入系统密码 输入密码时候 xff08 输入过程中看不到输入的密
  • MAC编译Android源码 prebuilts/misc/darwin-x86/bison/bison出错

    错误提示 xff1a 0 438 72411 external one true awk awk yacc awkgram y FAILED out soong intermediates external one true awk awk
  • VMware Tools安装方法及共享文件夹设置方法

    正确安装好VMware Tools后 xff0c 可以实现主机与虚拟机之间的文件共享 xff0c 可以设置共享文件夹 xff0c 以及在主机与虚拟机之间直接进行复制黏贴的操作 安装方法 xff1a 选择 34 虚拟机 34 gt 34 重新
  • repo init 失败

    root 64 68b3ebd4a7ab aosp python3 bin repo init u https aosp tuna tsinghua edu cn platform manifest b android 9 0 0 r40
  • 修改ubuntu的sources.list源

    1 首先备份源列表 首先备份源列表 sudo cp etc apt sources list etc apt sources list backup 2 而后打开sources list文件修改 sudo vim etc apt sourc
  • Ubuntu16.04安装Python3.7并设置为默认版本

    1 安装编译环境 sudo apt get install zlib1g dev libbz2 dev libssl dev libncurses5 dev libsqlite3 dev libreadline dev tk dev lib
  • python 3.5 3.7-ubuntu16.04升级Python3.5到Python3.7的方法步骤

    ubuntu16 04自带python有两个版本 xff0c 一个2版本 xff0c 使用的是python xff1b 另一个是3版本 xff0c 使用的是python3 简易安装python后得到的3版本的版本号是python3 5 可以
  • Ubuntu无法使用终端解决方法

    最近在尝试使用Ubuntu xff0c 并遇到了一个坑 我安装的是Ubuntu16 04LTS xff0c 其内置了Python2 7 xff0c 但我想要使用Python3 所以就安装了自带的Python3软件包 xff0c 结果发现版本
  • 安装python3.8后,Ubuntu无法打开终端gnome-terminal的解决方法整理版(importerror _gi)

    在更新了python3 8后 发现Ubuntu上的gnome terminal无法用快捷ctrl 43 alt 43 T打开了 右键点击也是一直转圈啥反应都没有 只剩下桌面右键点击 选择终端这一个途径 到了发现原因竟然是在将python3重
  • 无法找到软件包libffi-dev

    Addthis entry in your etc apt sources list if it 39 snot deb http archive ubuntu com ubuntu vivid main restricted univer
  • 横竖屏切换时,禁止activity重新创建,导致getActivity为null

    遇到的问题如下 xff1a 出现问题代码如下 xff1a private AlertDialog Builder glxssConnectionDialog if getActivity 61 61 null return null fin