【问题标题】:Strange nullpointer in supportmapfragment.getFragmentManager()supportmapfragment.getFragmentManager() 中的奇怪空指针
【发布时间】:2014-05-14 11:55:17
【问题描述】:

我有一个应用程序,其中有一个列表,当您单击其中的项目时,我会显示一个包含地图等内容的详细视图。

这已经有一段时间了,但昨天我得到了一个奇怪的崩溃日志,这是我几个月前部署这个版本以来的第一个。根据崩溃报告,它在运行 4.4 的三星 Galaxy S4 上。

基本上是这样说的

FragmentManager manager = mapFragment.getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();

在 begintransaction 调用中抛出 nullpointerexception,显然是因为前行的“getFragmentManager”返回 null。

我的 mapfragment 在父线性布局(带有列表的那个)中初始化,如下所示:

userStatusDetailsLayout = (UserStatusDetailsLayout) inflater.inflate(R.layout.userstatsdetails, container, false);

然后我直接调用

userStatusDetailsLayout.initCompononents(activity);    

在那个方法中我初始化了导致空指针的mapfragment:

mapFragment = (SupportMapFragment) activity.getSupportFragmentManager().findFragmentById(R.id.statsDetailMap);

我从来没有在我的任何测试单元上看到过这种情况,也没有在我的任何测试人员上看到过这种情况。我难住了。这与膨胀和查找碎片的时间有关吗? (我夸大 detailslayout 的原因是我不想这样做,除非有人真的想看到它,当他们这样做时,我想保留它并重新使用它,因为它,尤其是在速度较慢的手机上,是膨胀地图的成本相当高)。

发布此消息以查看是否有人知道何时会发生这种情况...

【问题讨论】:

  • 试试这种方式SupportMapFragment fragment = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.statsDetailMap));我过去克服了同样的问题,我通过使用这个片段代码解决了。
  • 您好,感谢您的回复。但它不是为空的片段。 fragment.getFragmentManager() 返回的 fragmentmanager 为空。一次。曾经。 :) 正如我所提到的,它总是适用于我和所有其他正在测试应用程序的人。你是说你也有这个问题吗?试图理解......
  • 好的,现在我明白了。但后来你打电话给Fragmentmanager()。如何在事务中添加Fragment

标签: android android-fragments supportmapfragment fragmentmanager


【解决方案1】:

改变

mapFragment = (SupportMapFragment) activity.getSupportFragmentManager().findFragmentById(R.id.statsDetailMap);

mapFragment = (SupportMapFragment)getFragmentManager().findFragmentById(R.id.statsDetailMap);

【讨论】:

  • 但它不是为空的片段。 fragment.getFragmentManager() 返回的 fragmentmanager 为空。一次。曾经。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多