片段.remove()。renplace()然后旋转+后退按钮会崩溃应用程序

时间:2014-03-17 17:25:48

标签: android nullpointerexception fragment back-stack

我在onActivityResult()这个:

if(fm.findFragmentByTag("CARS")!=null)
                {
                    ft.remove(fm.findFragmentByTag("CARS"));
                    ft.replace(R.id.main_content_frame, cFr, "CARS");
                    ft.addToBackStack(null);
                    ft.commit();
                }

因为我想在向数据库添加新Car之后重新加载CarsFragment cFr。假设下一个应用程序使用:

主页 - >汽车 - > AddNewCar(表单填写好) - >汽车(带有重新加载的数据) - > [后退按钮] - >家

完美无缺。但是:

主页 - >汽车 - > AddNewCar(表单填写好) - >汽车(带有重新加载的数据) - > [旋转] - > [后退按钮] - > --CRASH -

由于NullPointerException抛出PopFromBackStack(),会导致应用崩溃。

有什么想法吗?我的意思是,当我旋转屏幕时, BackStack会发生什么?因为如果我不旋转,一切正常。如果我按下第一个后退按钮后旋转屏幕(我的意思是,如果我已经回到家中),它会保持正常工作。只有在收到ActivityResult后我才会旋转片段。

编辑:就在if()我有

之前
      fm.popBackStack();
      ft = fm.beginTransaction();

我已经知道问题是由popBackStack();引起的。如果我不打电话给它,它几乎可以正常工作,除了CarsFragments将被复制(.remove()不起作用,不知道为什么)。我还在苦苦挣扎。

0 个答案:

没有答案