我有一个应用程序,其中有一个列表,当您点击其中的项目时,我会显示一个详细视图,其中包含一个地图。
这已经存在了一段时间,但昨天我得到了一个奇怪的崩溃日志,自从我在几个月后部署这个版本以来第一个。根据崩溃报告,这是在运行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);
我从未在任何测试单元上看到过这个,也没有在我的测试人员身上看过。我很难过。是否与膨胀和发现片段的时间有关? (我之所以夸大详情布局是因为我不想这样做,除非有人真的想看到它,当他们这样做时我想保留它并重新使用它,特别是较慢的手机,对地图进行充气是非常昂贵的。)
发布此信息,看看是否有人可能知道何时会发生这种情况......
答案 0 :(得分:0)
更改
mapFragment = (SupportMapFragment) activity.getSupportFragmentManager().findFragmentById(R.id.statsDetailMap);
到
mapFragment = (SupportMapFragment)getFragmentManager().findFragmentById(R.id.statsDetailMap);