supportmapfragment.getFragmentManager()中的奇怪nullpointer

时间:2014-05-14 11:55:17

标签: android android-fragments supportmapfragment fragmentmanager

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

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

基本上它说

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

在begintransaction调用上抛出nullpointerexception,显然是因为" getFragmentManager"在返回null之前的行上。

我的mapfragment在parent linearlayout(带有列表的那个)中初始化,如下所示:

userStatusDetailsLayout = (UserStatusDetailsLayout) inflater.inflate(R.layout.userstatsdetails, container, false);
然后我直接打电话

userStatusDetailsLayout.initCompononents(activity);    

并在该方法中初始化导致nullpointer的mapfragment:

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

我从未在任何测试单元上看到过这个,也没有在我的测试人员身上看过。我很难过。是否与膨胀和发现片段的时间有关? (我之所以夸大详情布局是因为我不想这样做,除非有人真的想看到它,当他们这样做时我想保留它并重新使用它,特别是较慢的手机,对地图进行充气是非常昂贵的。)

发布此信息,看看是否有人可能知道何时会发生这种情况......

1 个答案:

答案 0 :(得分:0)

更改

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

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