android - 如何在 Activity 完成后显示对话框

标签 android

假设我们有两个 Activity ,Activity1 和 Activity2。

在 Activity1 的 onClick() 方法中,如果某个按钮被按下,我们会调用启动 Activity 2:

Intent myIntent = new Intent(Activity1.this, Activity2.class);
Activity1.this.startActivity(myIntent);

在 Activity2 中调用 finish() 并恢复 Activity1 后,我需要在 Activity1 恢复后立即显示一个对话框。

之前,我只是在 Activity1 的 onClick() 方法的同一 block 中调用 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 完成时显示一个对话框。

感谢您提供的任何帮助。

最佳答案

按照您的建议,在启动 Activity2 时调用 startActivityForResult。然后,覆盖 onActivityResult 并检查 RESULT_OK,然后显示您的对话框。对于做您想做的事情,这是完全可以接受的做法。

关于android - 如何在 Activity 完成后显示对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11143033/

相关文章:

android - 检测应用程序何时不再处于 Activity 状态

java - 从 fragment 到上一个主页 fragment 的后退按钮箭头

android - Mapview 收到的 Bottomsheet 触摸事件

android - 在父 Activity 中访问 fragment viewPager

android - 使用 volley 库的 Android map 接口(interface)的目的是什么?

android - 使用布局上方的主题组合框选择不同的布局,或修复主题样式引用

android - 动态更改自定义列表项背景

android - 具有不同背景和突出显示颜色的凸起和平按钮

android - 延迟发布(审核通过后无具体日期) AppGallery Connect

Android - 更改 fragment 容器