0

我已经尝试过了,但是当 Activity 完成时对话框被关闭,因为对话框采用 Activity 的上下文。有什么办法吗?

4

5 回答 5

2

你可以。创建一个单独的活动来显示您的对话框。在清单中定义您的对话活动,如下所示:

<activity android:name=".DialogActivity"     
         android:theme="@android:style/Theme.Dialog"                                 
        android:excludeFromRecents="true" android:taskAffinity=""
        android:launchMode="singleInstance">
</activity>

定义您的对话框或您想在此活动中显示的任何内容。完成活动后启动此 DialogActivity。

于 2013-05-13T07:52:59.460 回答
1

Fragments 生命附着在它所附加的 Activity 上,因此这是预期的行为。一种解决方法是,比如说,让活动 B 通过startActivityForResult. 这样 Dialog 会在 Activity B 完成后立即弹出,但通过 Activity A 保持其生命,在那个时间点不会被销毁。

于 2013-05-13T07:21:41.657 回答
0

您可以使用 startActivityForResult 并在其中显示对话框。

或者试试下面

if(someCondition){
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage("message")
    .setPositiveButton("Yes", this)
    .setNegativeButton("No", this);
    builder.show();
} else {
    finish(); 
}
于 2013-05-13T07:27:57.707 回答
0

活动完成后,您无法显示带有其引用的对话框。由于活动堆栈中不存在活动。相反,您可以通过提供先前活动的参考来显示对话框。

或者您可以使用startActivityForResult并在其中显示对话框。

于 2013-05-13T07:20:35.580 回答
-4

您可以尝试从应用程序上下文中执行此操作

AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext());
//Your dialog setup here

builder.show();
于 2013-05-13T07:24:45.753 回答