第二次加载谷歌地图片段时,膨胀视图上的空指针

2024-01-03

我正在使用 DrawerLayout,当我第二次加载谷歌地图片段时,异常将按预期被捕获;但是,当我尝试时,进一步采用相同的方法

Button btnShowList = (Button) ui.findViewById(R.id.btnShowList);

我得到一个空指针异常。我想那是因为ui没有被赋予任何值。

我该如何处理这个问题?

Page2.java:

public class Page2 extends Fragment {

    View ui;
    final String TAG = "POPE";
    final int CODIGO_DE_RESULTADO_1 = 1; // Es para usarlo en onActivityResult();

    private GoogleMap mMap;

    public Page2(){
        // Este es el constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        if (ui != null) {
            ViewGroup parent = (ViewGroup) ui.getParent();
            if (parent != null){
                parent.removeView(ui);
            }
        }

        try {
            ui = inflater.inflate(R.layout.activity_page2,container,false);
        } catch (InflateException e) {
            Log.i(TAG,"HERE COMES THE STACK TRACE");
            e.printStackTrace();
        }

        FragmentManager fm = getFragmentManager();
        mMap = ((MapFragment) fm.findFragmentById(R.id.map)).getMap();
        mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);     
        mMap.setMyLocationEnabled(true);


        Button btnShowList = (Button) ui.findViewById(R.id.btnShowList);
        btnShowList.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                showFileslist();
            }
        });

        return ui;

    }
}

活动页面2.xml:

<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">

<fragment
    android:id="@+id/map"
    android:name="com.google.android.gms.maps.MapFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

<Button
    android:id="@+id/btnShowList"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:text="Load points" />

Log:

07-08 22:17:44.203: I/POPE(11859): HERE COMES THE STACK TRACE
07-08 22:17:44.213: W/System.err(11859): android.view.InflateException: Binary XML file line #6: Error inflating class fragment
07-08 22:17:44.213: W/System.err(11859):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:710)
07-08 22:17:44.213: W/System.err(11859):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:752)
07-08 22:17:44.213: W/System.err(11859):    at android.view.LayoutInflater.inflate(LayoutInflater.java:495)
07-08 22:17:44.213: W/System.err(11859):    at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
07-08 22:17:44.213: W/System.err(11859):    at com.jorgeandresserrano.gpstools.Page2.onCreateView(Page2.java:52)
07-08 22:17:44.213: W/System.err(11859):    at android.app.Fragment.performCreateView(Fragment.java:1695)
07-08 22:17:44.213: W/System.err(11859):    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:903)
07-08 22:17:44.213: W/System.err(11859):    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1075)
07-08 22:17:44.213: W/System.err(11859):    at android.app.BackStackRecord.run(BackStackRecord.java:682)
07-08 22:17:44.213: W/System.err(11859):    at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1455)
07-08 22:17:44.223: W/System.err(11859):    at android.app.FragmentManagerImpl$1.run(FragmentManager.java:441)
07-08 22:17:44.223: W/System.err(11859):    at android.os.Handler.handleCallback(Handler.java:725)
07-08 22:17:44.223: W/System.err(11859):    at android.os.Handler.dispatchMessage(Handler.java:92)
07-08 22:17:44.223: W/System.err(11859):    at android.os.Looper.loop(Looper.java:137)
07-08 22:17:44.223: W/System.err(11859):    at android.app.ActivityThread.main(ActivityThread.java:5293)
07-08 22:17:44.223: W/System.err(11859):    at java.lang.reflect.Method.invokeNative(Native Method)
07-08 22:17:44.223: W/System.err(11859):    at java.lang.reflect.Method.invoke(Method.java:511)
07-08 22:17:44.223: W/System.err(11859):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
07-08 22:17:44.223: W/System.err(11859):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
07-08 22:17:44.223: W/System.err(11859):    at dalvik.system.NativeStart.main(Native Method)
07-08 22:17:44.223: W/System.err(11859): Caused by: java.lang.IllegalArgumentException: Binary XML file line #6: Duplicate id 0x7f05003f, tag null, or parent id 0xffffffff with another fragment for com.google.android.gms.maps.MapFragment
07-08 22:17:44.223: W/System.err(11859):    at android.app.Activity.onCreateView(Activity.java:4863)
07-08 22:17:44.233: W/System.err(11859):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:686)
07-08 22:17:44.233: W/System.err(11859):    ... 19 more
07-08 22:17:44.233: D/AndroidRuntime(11859): Shutting down VM
07-08 22:17:44.233: W/dalvikvm(11859): threadid=1: thread exiting with uncaught exception (group=0x410feac8)
07-08 22:17:44.233: E/AndroidRuntime(11859): FATAL EXCEPTION: main
07-08 22:17:44.233: E/AndroidRuntime(11859): java.lang.NullPointerException
07-08 22:17:44.233: E/AndroidRuntime(11859):    at com.myname.myapp.Page2.onCreateView(Page2.java:66)
07-08 22:17:44.233: E/AndroidRuntime(11859):    at android.app.Fragment.performCreateView(Fragment.java:1695)
07-08 22:17:44.233: E/AndroidRuntime(11859):    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:903)
07-08 22:17:44.233: E/AndroidRuntime(11859):    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1075)
07-08 22:17:44.233: E/AndroidRuntime(11859):    at android.app.BackStackRecord.run(BackStackRecord.java:682)
07-08 22:17:44.233: E/AndroidRuntime(11859):    at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1455)
07-08 22:17:44.233: E/AndroidRuntime(11859):    at android.app.FragmentManagerImpl$1.run(FragmentManager.java:441)
07-08 22:17:44.233: E/AndroidRuntime(11859):    at android.os.Handler.handleCallback(Handler.java:725)
07-08 22:17:44.233: E/AndroidRuntime(11859):    at android.os.Handler.dispatchMessage(Handler.java:92)
07-08 22:17:44.233: E/AndroidRuntime(11859):    at android.os.Looper.loop(Looper.java:137)
07-08 22:17:44.233: E/AndroidRuntime(11859):    at android.app.ActivityThread.main(ActivityThread.java:5293)
07-08 22:17:44.233: E/AndroidRuntime(11859):    at java.lang.reflect.Method.invokeNative(Native Method)
07-08 22:17:44.233: E/AndroidRuntime(11859):    at java.lang.reflect.Method.invoke(Method.java:511)
07-08 22:17:44.233: E/AndroidRuntime(11859):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
07-08 22:17:44.233: E/AndroidRuntime(11859):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
07-08 22:17:44.233: E/AndroidRuntime(11859):    at dalvik.system.NativeStart.main(Native Method)

第 66 行是:

Button btnShowList = (Button) ui.findViewById(R.id.btnShowList);

该问题可以通过在离开之前在 onDestroyView() 方法中删除地图片段来解决。像这样:

@Override
public void onDestroyView() {
    super.onDestroyView();
    MapFragment f = (MapFragment) getFragmentManager().findFragmentById(R.id.map);
    if (f != null){ 
        getFragmentManager().beginTransaction().remove(f).commit();
    }
}

这篇文章更详细地解释了这一点https://stackoverflow.com/a/14484640/2422833 https://stackoverflow.com/a/14484640/2422833

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

第二次加载谷歌地图片段时,膨胀视图上的空指针 的相关文章

  • org/codehaus/plexus/archiver/jar/JarArchiver(不支持的major.minor版本49.0)-Maven构建错误

    下午大家 我在尝试构建项目时收到上述错误 我很确定这与使用 Java 1 6 编译的 Maven 最新更新有关 而我们尝试构建的项目是 1 4 项目 在此之前的插件工作没有问题 因此我将以下内容添加到 POM xml 文件中以尝试强制使用现
  • 从直方图计算平均值和百分位数?

    我编写了一个计时器 可以测量任何多线程应用程序中特定代码的性能 在下面的计时器中 它还会在地图中填充花费了 x 毫秒的调用次数 我将使用这张图作为我的直方图的一部分来进行进一步的分析 例如调用花费了这么多毫秒的百分比等等 public st
  • Eclipse - 安装新的 JRE (Java SE 8 1.8.0)

    我正在尝试安装 Java 8 到目前为止我所做的 安装最新版本的 Eclipse 下载并安装 Java SE 运行时环境 8http www oracle com technetwork java javase downloads jre8
  • 通过 appassembler-maven-plugin 生成的脚本无法在 Spring Boot 应用程序中找到主类

    我使用 appassembler maven plugin 生成的启动脚本有问题 我有一个基本的 spring boot 应用程序 只有一个类 SpringBootApplication public class ScriptDemoApp
  • Java、Spring:使用 Mockito 测试 DAO 的 DataAccessException

    我正在尝试增加测试覆盖率 所以我想知道 您将如何测试 DAO 中抛出的 DataAccessExceptions 例如在一个简单的 findAll 方法中 该方法仅返回数据源中的所有数据 就我而言 我使用 Spring JdbcTempla
  • 在运行时更改用作背景的 Drawable xml 内的形状纯色

    我有一个 Drawable xml 文件 background xml
  • Java:如何确定文件所在的驱动器类型?

    Java 是否有一种独立于平台的方法来检测文件所在的驱动器类型 基本上我有兴趣区分 硬盘 可移动驱动器 如 USB 记忆棒 和网络共享 JNI JNA 解决方案不会有帮助 可以假设 Java 7 您可以使用 Java 执行 cmd fsut
  • 如何从日期中删除毫秒、秒、分钟和小时[重复]

    这个问题在这里已经有答案了 我遇到了一个问题 我想比较两个日期 然而 我只想比较年 月 日 这就是我能想到的 private Date trim Date date Calendar calendar Calendar getInstanc
  • 寻找局部最小值

    下面的代码正确地找到了数组的局部最大值 但未能找到局部最小值 我已经进行了网络搜索 以找到找到最小值的最佳方法 并且根据这些搜索 我认为我正在使用下面的正确方法 但是 在几天的时间里多次检查每一行之后 下面的代码中有一些我仍然没有看到的错误
  • 在 Clojure 中解压缩 zlib 流

    我有一个二进制文件 其内容由zlib compress在Python上 有没有一种简单的方法可以在Clojure中打开和解压缩它 import zlib import json with open data json zlib wb as
  • Karaf / Maven - 无法解决:缺少需求 osgi.wiring.package

    我无法在 Karaf 版本 3 0 1 中启动捆绑包 该包是使用 Maven 构建的并导入gson http mvnrepository com artifact com google code gson gson 2 3 1 我按照要求将
  • 如何将样式应用于我拥有的所有 TextView? [复制]

    这个问题在这里已经有答案了 可能的重复 设计所有 TextView 或自定义视图 的样式 而不向每个 TextView 添加样式属性 https stackoverflow com questions 6801890 styling all
  • 无需登录即可直接从 Alfresco 访问文件/内容

    我的场景是这样的 我有一个使用 ALFRESCO CMS 来显示文件或图像的 Web 应用程序 我正在做的是在 Java servlet 中使用用户名和密码登录 alfresco 并且我可以获得该登录的票证 但我无法使用该票证直接从浏览器访
  • 如何处理 StaleElementReferenceException

    我正在为鼠标悬停工作 我想通过使用 for 循环单击每个链接来测试所有链接的工作条件 在我的程序中 迭代进行一次 而对于下一次迭代 它不起作用并显示 StaleElementReferenceException 如果需要 请修改代码 pub
  • 替换文件中的字符串

    我正在寻找一种方法来替换文件中的字符串而不将整个文件读入内存 通常我会使用 Reader 和 Writer 即如下所示 public static void replace String oldstring String newstring
  • 丢失应用程序的密钥库文件(但已启用 Google Play 应用程序签名)

    我已经失去了原来的keystore用于签署我的应用程序的文件 我的应用启用了 Google Play 应用签名 如果我联系 Google 支持人员 是否可以重置密钥 以便我可以继续上传到此包 我希望我可以做到这一点 因为应用程序签名已启用
  • HttpClient请求设置属性问题

    我使用这个 HttpClient 库玩了一段时间 几周 我想以某种方式将属性设置为请求 不是参数而是属性 在我的 servlet 中 我想使用 Integer inte Integer request getAttribute obj 我不
  • 记录类名、方法名和行号的性能影响

    我正在我的 java 应用程序中实现日志记录 以便我可以调试应用程序投入生产后可能出现的潜在问题 考虑到在这种情况下 人们不会奢侈地使用 IDE 开发工具 以调试模式运行事物或单步执行完整代码 因此在每条消息中记录类名 方法名和行号将非常有
  • 使用 JFreeChart 为两个系列设置不同的 y 轴

    我正在使用 JFreeChart 使用折线图绘制两个数据系列 XYSeries 复杂的因素是 其中一个数据系列的 y 值通常远高于第二个数据系列的 y 值 假设第一个系列的 y 值约为数百万数量级 而第二个数据系列的 y 值约为数百万数量级
  • 检查应用程序是否在 Android Market 上可用

    给定 Android 应用程序 ID 包名称 如何以编程方式检查该应用程序是否在 Android Market 上可用 例如 com rovio angrybirds 可用 而 com random app ibuilt 不可用 我计划从

随机推荐

  • 如何使用 REST API 从 Parse.com 下载文件?

    我发现这个问题在Parse com 文件下载问题 https stackoverflow com questions 14907562 how to download parse com file type using rest api但是
  • SPARQL 获取类或个体的所有属性

    我想要做的是从Individual1或从一个类获取属性列表 获取 某物 的所有属性 结果应该是这样的 对于 Secret Data Asset has Confidentiality Importance High Asset has Av
  • 使用 docker swarm 执行单个容器而不是“服务”

    我真的很喜欢拥有一组 docker 机器来执行 docker 服务的概念 我还喜欢单个 docker 容器所不具备的附加功能 例如 docker Secret 但我确实不需要长期服务 我的用例是简单地执行 bash 脚本 以使用 docke
  • JavaScript 静态类型检查的现状如何?

    我知道 Google Closure 编译器会进行类型检查 但是有没有其他替代方案 最好是不与库和优化器紧密耦合的替代方案 如果没有 有什么办法让Google Closure编译器only做静态分析 这里的静态分析是指定义参数的类型等 如果
  • 使用 MongoDB Java 驱动程序更新嵌入式文档中的字段?

    我正在尝试使用 Java 驱动程序对 MongoDB 中的嵌入式文档执行更新 但收到一个 IllegalArgumentException 指出 存储在数据库中的字段不能有 我的文档具有以下结构 id ObjectId 5155d102a4
  • 错误:之前应有“=”、“,”、“;”、“asm”或“__attribute__”

    是的 我知道这个问题以前已经被问过很多次了 但是我正在绞尽脑汁试图找出导致错误的原因 因为我无法识别通常丢失的分号在哪里 list h list h ifndef LIST H define LIST H define TRUE true
  • 从 Powershell 运行 R 脚本

    在批处理脚本中 我可以使用以下语法运行 R 脚本 Rterm exe quiet slave vanilla lt C some script R 不过 Powershell似乎为以后的扩展保留了 你可能应该看看Rscript而不是重定向
  • grails 将验证错误添加到 hasErrors

    我想知道如何向 hasErrors 方法添加自定义错误 以便 gsp 检测到错误 到目前为止我的代码 def recoverySetup new RecoverySetup params def onesolOrgkey OnesolOrg
  • '-[CIContext initWithOptions:]: 无法识别的选择器发送到实例

    我用它来生成一个大图像 let context CIContext options nil let bitmapImage CGImageRef context createCGImage image fromRect extent CGC
  • WordPress 插件内子页面的 url 解析

    假设我在 WordPress 中有一个页面 foo 这样 http www blah com foo 就会显示它 假设此页面的内容中有一个触发器 例如 现在有没有一种方法可以让插件知道它想要处理该类型的所有 urlhttp www blah
  • 在 Firebase 存储上复制文件?

    是否可以复制 Firebase 存储上的现有文件而无需再次上传 我需要它来设置我的应用程序的已发布 工作版本 Firebase Storage API 中没有方法可以为您已上传的文件创建副本 但 Firebase Storage 是建立在
  • 使用 Azul jdk 11 运行嵌入式 cassandra 时出现 AccessDeniedException

    我正在尝试使用 cassandra unit 库运行嵌入式 Cassandra蓝色 JDK 11使用 Gradle 项目并获取以下 AccessDenindException 我已经检查了权限build文件夹不是只读的 并且已经有一些文件
  • 选择不同的通知并准备更清晰的通知消息

    我已经创建了一个通知系统 它非常好 为了使其完美 还有一些事情需要改进 所以我就在这里 我正在开发的应用程序是一个用 PHP 编写的网站 我的通知有这个seen指示通知是否已签出的列 当用户单击与 Facebook 非常相似的通知下拉按钮时
  • 如何导入资源模块?

    今天我看到一个 python 文件以 import sys import time import heapq import resource from itertools import groupby from collections im
  • Heroku Rails Procfile

    我对 Heroku 很陌生 我将 Rails 应用程序上传到 Heroku 并希望使用 Thin 而不是 Webrick 来运行它 下列的Heroku 的指南 https devcenter heroku com articles rail
  • 带有 Flex SDK 的 Flash 组件

    我正在使用 Flex SDK 将 ActionScript 3 类编译为 swf 有些组件未包含在 SDK 中 例如 fl controls 组件 我有哪些选项可以访问闪存组件 我看到其他人提到我可以将它们导出到 Flash Pro 中的
  • Lua:加载文件后获取全局函数失败

    我正在尝试调用名为 test2 lua 的 lua 文件内的函数 这是test2 lua的内容 function abc path t table insert t a return t end 正如您所看到的 它需要一个输入并返回一个字符
  • Android:读取在 Google Drive 文件选择器中选择的文件

    在我的应用程序中 我需要读取一个设置文件 该设置文件可以位于本地存储中 也可以位于用户的 Google Drive 存储中 安装了 Google Drive 应用程序 下面打开一个文件选择器 首先询问用户要使用哪个文件选择器 包括使用 Go
  • 如何检索一个人的所有 GitHub 存储库列表?

    我们需要显示一个人在 GitHub 帐户上的存储库中的所有项目 如何使用特定人员的 git 用户名显示其所有 git 存储库的名称 您可以使用github API http developer github com v3 repos 为了这
  • 第二次加载谷歌地图片段时,膨胀视图上的空指针

    我正在使用 DrawerLayout 当我第二次加载谷歌地图片段时 异常将按预期被捕获 但是 当我尝试时 进一步采用相同的方法 Button btnShowList Button ui findViewById R id btnShowLi