我在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()
不起作用,不知道为什么)。我还在苦苦挣扎。