2015-12-02 111 views
0

当重新启动应用程序我有问题getActivity()返回null,所以我解决了它与onAttach()。但是现在我有一个新的问题FragmentTransactioncommit()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()); 
      } 
     }); 

请帮助,不知道该怎么办...

回答

0

检查是否activity的交易片段(在这种情况下)之前完成或不 下面是摘录: -

if (!isFinishing()) { 
    FragmentTransaction transaction = myContext.getSupportFragmentManager().beginTransaction(); 
    transaction.replace(R.id.content, fragment); 
    transaction.commitAllowingStateLoss(); 
} 
+0

我试过了,第二次打开应用程序时,isFinishing()是真的。我该做些什么才能做到!isFinishing()又是什么? – Christer

+0

为什么在使用后退按钮关闭应用程序时不重置应用程序100%?在关闭它之后运行应用程序时,onCreate不会在MainActivity中调用...要重置应用程序100%,我必须通过关闭这个程序(homebutton左边的按钮)来关闭它。 – Christer

0

当点击“返回”并退出应用程序时,一些文件将被存储在内存中以加快启动速度。因此,为了使应用程序重置100%,我必须在MainActivity中添加此应用程序。

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    System.exit(0); 
} 

如果有人有更好的解决方案,请发布!

相关问题