Android FragmentTransaction commit() - 活动已被破坏
问题描述:
当重新启动应用程序我有问题getActivity()
返回null
,所以我解决了它与onAttach()
。但是现在我有一个新的问题FragmentTransaction
commit()
和commitAllowingStateLoss
。它说活动已被销毁。Android FragmentTransaction commit() - 活动已被破坏
Activity mActivity;
private FragmentActivity myContext;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
myContext =(FragmentActivity) activity;
mActivity = activity;
}
private void navigateToFragment(Fragment fragment){
FragmentTransaction transaction = myContext.getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.content, fragment);
transaction.commitAllowingStateLoss();
}
导航工作在第一时间我运行该应用程序,但重启应用程序时,它崩溃在transaction.commitAllowStateLoss();
(mActivity).runOnUiThread(new Runnable() {
@Override
public void run() {
enableMenu();
openMenu();
navigateToFragment(new BlankFragment());
}
});
请帮助,不知道该怎么办...
答
检查是否activity
的交易片段(在这种情况下)之前完成或不 下面是摘录: -
if (!isFinishing()) {
FragmentTransaction transaction = myContext.getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.content, fragment);
transaction.commitAllowingStateLoss();
}
答
当点击“返回”并退出应用程序时,一些文件将被存储在内存中以加快启动速度。因此,为了使应用程序重置100%,我必须在MainActivity中添加此应用程序。
@Override
protected void onDestroy() {
super.onDestroy();
System.exit(0);
}
如果有人有更好的解决方案,请发布!
我试过了,第二次打开应用程序时,isFinishing()是真的。我该做些什么才能做到!isFinishing()又是什么? – Christer
为什么在使用后退按钮关闭应用程序时不重置应用程序100%?在关闭它之后运行应用程序时,onCreate不会在MainActivity中调用...要重置应用程序100%,我必须通过关闭这个程序(homebutton左边的按钮)来关闭它。 – Christer