从asynctasks显示时,DialogFragment illegalstateException

时间:2013-09-03 04:44:31

标签: android android-asynctask android-dialogfragment

  1. 我有一个asyncTaks做一些后台操作导致更新UI
  2. 用户启动活动,启动AsyncTask进行后台工作。
  3. 用户点击主键退出应用程序。调用onSaveInstanceState()。
  4. AsyncTask完成,并尝试根据onPostexecute()的结果显示DialogFragment或LoginFragment。
  5. 因为它在onSaveInstance()之后执行FragmentTransaction。发生IllegaeStateException。
  6. 要处理loginfragments,我调用commitAllowingStateLoss();而不是commit(); 。它解决了loginfragment的问题
  7. 我的问题是我应该为我的对话片段做些什么。

    private void networkError(){
        NetowrkErrorDialog mErrorDialog = NetowrkErrorDialog.newInstance();
        mErrorDialog.setStyle(DialogFragment.STYLE_NO_FRAME, android.R.style.Theme_DeviceDefault_NoActionBar_Fullscreen);
        mErrorDialog.setCancelable(false);
        if(mErrorDialog.isVisible()==false){
            mErrorDialog.show(mMainActivity.getSupportFragmentManager(), "networkerror");
        }
    
    }
    

1 个答案:

答案 0 :(得分:0)

只要在活动上调用onPause(),您就必须停止AsyncTask。在AsyncTask上调用cancel(true)。用户可以返回您的活动并重新开始。

或使用IntentService

相关问题