【问题标题】:Android FragmentTransaction commit() - Activity has been destroyedAndroid FragmentTransaction commit() - Activity 已被销毁
【发布时间】:2015-12-02 12:20:22
【问题描述】:

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

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

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

【问题讨论】:

    标签: android android-activity fragmenttransaction


    【解决方案1】:

    在处理片段之前检查activity是否完成(在这种情况下) 下面是sn-p:-

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

    【讨论】:

    • 我试过了,第二次打开应用时isFinishing()为真。我该怎么做才能让它 !isFinishing() 再次?
    • 为什么在使用返回按钮关闭应用程序时应用程序不重置 100% ?在关闭应用程序后运行应用程序时,在 MainActivity 中不会调用 onCreate...要重置应用程序 100%,我必须通过关闭进程(按钮向主页按钮)来杀死它。
    【解决方案2】:

    当点击“返回”退出应用程序时,一些程序会存储在内存中,以便更快地启动。因此,为了使应用程序重置为 100%,我必须在 MainActivity 中添加它。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-25
      • 2014-12-02
      相关资源
      最近更新 更多