假设我们有两个活动,Activity1和Activity2。
在Activity1的onClick()方法中,如果某个按钮被按下,我们会调用启动Activity 2:
在Activity2中调用finish()后,Activity1将恢复,我需要在Activity1恢复后立即显示一个对话框。
之前,我只是在Activity1的onClick()方法的同一块中调用showDialog(id)。
问题在于,在Activity1恢复后,与END_DIALOG_ID相对应的对话框不可见,但屏幕变暗且无响应(就像对话框存在一样),直到按下返回键。
我尝试将showDialog()方法放置在Activity1的onResume()和onRestart()方法中,但这两者都会使程序崩溃。
我还尝试在Activity2中创建一个AsyncTask方法,并在其onPostExecute()中调用showDialog()方法,但对话框在Activity2中不可见。
我现在正在尝试通过调用
通过Activity1中的setResult()和onActivityResult()方法与之对应,可以实现这一功能。但是,似乎有更好的实现方式。我只需要在Activity2结束时显示一个对话框即可。
非常感谢您所提供的任何帮助。
在Activity1的onClick()方法中,如果某个按钮被按下,我们会调用启动Activity 2:
Intent myIntent = new Intent(Activity1.this, Activity2.class);
Activity1.this.startActivity(myIntent);
在Activity2中调用finish()后,Activity1将恢复,我需要在Activity1恢复后立即显示一个对话框。
之前,我只是在Activity1的onClick()方法的同一块中调用showDialog(id)。
public void onClick(View v) {
if(v == addHole){
//...
Intent myIntent = new Intent(Activity1.this, Activity2.class);
Activity1.this.startActivity(myIntent);
showDialog(END_DIALOG_ID);
}
}
问题在于,在Activity1恢复后,与END_DIALOG_ID相对应的对话框不可见,但屏幕变暗且无响应(就像对话框存在一样),直到按下返回键。
我尝试将showDialog()方法放置在Activity1的onResume()和onRestart()方法中,但这两者都会使程序崩溃。
我还尝试在Activity2中创建一个AsyncTask方法,并在其onPostExecute()中调用showDialog()方法,但对话框在Activity2中不可见。
private class ShowDialogTask extends AsyncTask<Void, Void, Integer> {
/** The system calls this to perform work in a worker thread and
* delivers it the parameters given to AsyncTask.execute() */
protected Integer doInBackground(Void... id) {
//do nothing
return END_DIALOG_ID;
}
/** The system calls this to perform work in the UI thread and delivers
* the result from doInBackground() */
protected void onPostExecute(Integer id) {
super.onPostExecute(id);
showDialog(id);
}
}
我现在正在尝试通过调用
来实现这一点
。Activity1.this.startActivityForResult(myIntent, END_DIALOG_REQUEST);
通过Activity1中的setResult()和onActivityResult()方法与之对应,可以实现这一功能。但是,似乎有更好的实现方式。我只需要在Activity2结束时显示一个对话框即可。
非常感谢您所提供的任何帮助。