1

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

这已经有一段时间了,但昨天我收到了一个奇怪的崩溃日志,这是我几个月前部署这个版本以来的第一个。根据崩溃报告,它在运行 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 的原因是我不想这样做,除非有人真的想看到它,当他们这样做时,我想保留它并重新使用它,因为它,尤其是在速度较慢的手机上,是膨胀地图的成本相当高)。

发布此内容以查看是否有人可能知道何时会发生这种情况...

4

1 回答 1

0

改变

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

mapFragment = (SupportMapFragment)getFragmentManager().findFragmentById(R.id.statsDetailMap);
于 2014-05-14T12:03:15.007 回答