【发布时间】: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