java - 当 Activity 处于后台时,在 AsyncTask.onPostExecute 上显示 DialogFragment;

标签 java android android-asynctask android-dialogfragment

当尝试在 Activity 转到后台后显示对话框时,我收到 java.lang.IllegalStateException: Can not Perform this action after onSaveInstanceState ,我需要向用户显示此消息,是有任何方法可以在 Activity 恢复时显示对话框。我的代码是这样的:

public class MyTask extends AsyncTask<String,String,String>{

    ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);

    @Override
    protected void onPreExecute() {
        progressDialog.setMessage(getString(R.string.dialog_progress_message));
        progressDialog.setCancelable(false);
        progressDialog.show();
    }

    @Override
    protected String doInBackground(String... params) {
        // HTTP POST user action
        // App goes to background (user press home button i.e.)
        // Getting message from server
        return message;
    }

    @Override
    protected void onPostExecute(String message) {
        progressDialog.dismiss();

        DialogAlert dialogAlert = DialogAlert.newInstance(message);
        dialogAlert.setCancelable(false);
        //App crash here
        dialogAlert.show(getSupportFragmentManager(), TAG);

    }
}

我尝试过使用AsyncTaskLoader,但是当 Activity 恢复时该对话框不会显示。任何想法。

最佳答案

尝试使用下面的代码 fragment ,

替换

dialogAlert.show(getSupportFragmentManager(), TAG);

getSupportFragmentManager().beginTransaction().add(dialogAlert, "tag")
                           .commitAllowingStateLoss();

关于java - 当 Activity 处于后台时,在 AsyncTask.onPostExecute 上显示 DialogFragment;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31109428/

相关文章:

android - 要强制取消 AsyncTask,doInBackground 中定期检查的标志不应该是易变的吗?

java - 带有提供信息的列表的 JFrame

java - 如何从java调用Nodejs函数

java - 添加到 ArrayList 时出现 NullPointerException [长文]

java - Elastic Beanstalk 主机特定应用程序配置

android - 使用 Android 和 Firebase 显示图片列表

android - getItem() 在 FragmentPagerAdapter 中多次调用

android - 使用 Async Task 和 BaseAdapter 解析 Json

java - 当 CL 的高度设置为wrap_Content 时,为什么坐标布局 ( CL ) 会隐藏一半的 float 操作按钮?

java - Android AsyncTask 方法之间的技术差异