当 activity 处于后台时,在 AsyncTask.onPostExecute 上显示 DialogFragment;
Show DialogFragment on AsyncTask.onPostExecute when activity is in background;
我在 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 恢复时对话框没有出现。任何想法。
试试下面的代码片段,
替换
dialogAlert.show(getSupportFragmentManager(), TAG);
和
getSupportFragmentManager().beginTransaction().add(dialogAlert, "tag")
.commitAllowingStateLoss();
我在 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 恢复时对话框没有出现。任何想法。
试试下面的代码片段,
替换
dialogAlert.show(getSupportFragmentManager(), TAG);
和
getSupportFragmentManager().beginTransaction().add(dialogAlert, "tag")
.commitAllowingStateLoss();