Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android AlertDialog这是一个bug吗?_Android - Fatal编程技术网

Android AlertDialog这是一个bug吗?

Android AlertDialog这是一个bug吗?,android,Android,我的应用程序创建一个AlertDialog,用户在其中输入要保存的名称。当用户单击save按钮时,onClickListener将检查重复的名称。如果名称已存在,则会弹出另一个对话框,提醒用户现有数据将被替换。然后,用户可以选择取消并返回以更改为新名称,或者继续并替换数据。 当第二个对话框出现时,我希望第一个对话框在我调用Disclease之前仍然可见。但是,第一个AlertDialog在第二个AlertDialog出现之前消失。也就是说,单击按钮时将自动调用Disclose。这是一个bug还是

我的应用程序创建一个AlertDialog,用户在其中输入要保存的名称。当用户单击save按钮时,onClickListener将检查重复的名称。如果名称已存在,则会弹出另一个对话框,提醒用户现有数据将被替换。然后,用户可以选择取消并返回以更改为新名称,或者继续并替换数据。
当第二个对话框出现时,我希望第一个对话框在我调用Disclease之前仍然可见。但是,第一个AlertDialog在第二个AlertDialog出现之前消失。也就是说,单击按钮时将自动调用Disclose。这是一个bug还是设计的?
我在下面写了一个测试用例,检查了3台设备:Nexus S安卓4.0、HTC Rezound安卓2.3和摩托罗拉Droid仿生安卓2.3

布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:orientation="vertical" >

    <TextView 
        android:id="@+id/message"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Some message will be here"
    />

    <Button
        android:id="@+id/show_btn"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:text="Show"
    />

</LinearLayout>

我最初使用android:theme=“@android:style/theme.dialog”将对话框另存为活动。Nexus S和Rezound上的UI看起来不错,但Droid仿生上的UI看起来很糟糕(编辑框和按钮只占了一半的宽度,另一半是空白)。

不是一个bug-在这种情况下,只提供了onClick(),以便您可以在单击按钮时更新UI/采取行动


如果要在单击“确定”按钮时保持对话框,可以尝试使用“确定/取消”按钮创建具有透明背景的自定义活动。

不是错误-在这种情况下,只提供了onClick(),以便在单击按钮时更新UI/采取行动

如果您希望在单击“确定”按钮时保持对话框,可以尝试使用“确定/取消”按钮创建具有透明背景的自定义活动。

这是出于设计。 如果您不想通过单击按钮取消对话框,下面是一些代码。 当您不想取消该对话框时,将其添加到setPositiveButton方法中

try { 
Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing"); 
field.setAccessible(true); 
field.set(dialog, false);

} catch (Exception e) { 
e.printStackTrace(); 
}
如果你想取消这个对话框,只需要在下面添加这个

try {
Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
field.setAccessible(true);
field.set(dialog, true);
} catch (Exception e) {
e.printStackTrace();
}
顺便说一下,您的警报对话框永远不会调用xml。因为setTitle()和setMessage方法是由alert对话框提供的

如果要提供自定义对话框,请调用setCustomeView(布局)

如果有任何问题,请告诉我

这是设计的。 如果您不想通过单击按钮取消对话框,下面是一些代码。 当您不想取消该对话框时,将其添加到setPositiveButton方法中

try { 
Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing"); 
field.setAccessible(true); 
field.set(dialog, false);

} catch (Exception e) { 
e.printStackTrace(); 
}
如果你想取消这个对话框,只需要在下面添加这个

try {
Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
field.setAccessible(true);
field.set(dialog, true);
} catch (Exception e) {
e.printStackTrace();
}
顺便说一下,您的警报对话框永远不会调用xml。因为setTitle()和setMessage方法是由alert对话框提供的

如果要提供自定义对话框,请调用setCustomeView(布局)


如果有任何问题,请告诉我

我确实将“保存”对话框编写为“活动”。我想我必须回到布局,看看我做错了什么,这让机器人仿生看起来很奇怪。无论如何,如果是设计的,那么在onClick中调用dismise是多余的,不是吗?正确,您不应该从侦听器调用dismise。如果用户在显示对话框时点击“后退”按钮,onDismiss可能会被单独调用。我想我必须回到布局,看看我做错了什么,这让机器人仿生看起来很奇怪。无论如何,如果是设计的,那么在onClick中调用dismise是多余的,不是吗?正确,您不应该从侦听器调用dismise。如果用户在显示对话框时点击“后退”按钮,onDismiss可能会被单独调用。谢谢,这很有效,可以避免我重写我的应用程序。上面的布局用于“活动而非警报”对话框。我的投票被拒绝,因为我没有足够的声誉,否则你会得到2票。谢谢你,这是有效的,它让我免于重写我的应用程序。上面的布局用于“活动而非警报”对话框。我的投票被否决了,因为我没有足够的声誉,否则你会得到2票。