1

在对数据库执行不可逆转的操作之前,我试图要求用户确认两次。问题是外部点击处理程序不等待内部点击处理程序。在第一个对话框上单击“是”按钮后,会短暂显示第二个对话框,但外部处理程序仍会执行并完成,最终会破坏两个对话框。

new AlertDialog.Builder(ActivityMain.this).setMessage(
  "Are you sure?").setPositiveButton("Yes",
    new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface arg0, int arg1) {

    new AlertDialog.Builder(ActivityMain.this).setMessage(
      "Are you really sure?").setPositiveButton("Yes",
    new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface arg0, int arg1) {

    ....

这是为什么?

4

2 回答 2

2

只需设计一个新的 xml 布局作为您的对话框并创建一个新活动并将其主题设置为活动标记下清单文件中的 @android:style/Theme.Dialog :

<activity android:theme="@android:style/Theme.Dialog" android:name="LocationDialog"> </activity>

在对话框中单击侦听器代码启动活动为

new AlertDialog.Builder(ActivityMain.this).setMessage(
  "Are you sure?").setPositiveButton("Yes",
    new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface arg0, int arg1) {
             Intent i = new Intent(YourActivity.this, NewActivity.class);
             startActivity(i);
      }

这会将您的新活动作为一个对话框开始,您可以在其中轻松应用您的操作。

于 2011-01-16T09:19:24.497 回答
2

我相信这是因为对话框没有阻塞。一旦它们显示出来,处理就会转到下一行代码。对话框仍然显示,等待用户交互。

于 2012-12-09T13:59:10.540 回答