Android FragmentTransaction commit() - 活动已被破坏

时间:2015-12-02 12:20:22

标签: android android-activity fragmenttransaction

重新启动应用时,getActivity()返回null时遇到问题,所以我用onAttach()解决了问题。但是现在我遇到了FragmentTransaction commit()commitAllowingStateLoss的新问题。它说活动已被破坏。

    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());
            }
        });

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

2 个答案:

答案 0 :(得分:0)

在交易片段之前检查activity是否完成(在这种情况下) 以下是片段: -

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

答案 1 :(得分:0)

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

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

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