在尝试对数据库不可逆转的事情之前,我试图要求用户确认两次。问题是外部单击处理程序不等待内部单击处理程序。在第一个对话框上单击Yes按钮后,将短暂显示第二个对话框,但外部处理程序仍会执行并完成,最终会破坏两个对话框。
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) {
....
为什么?
答案 0 :(得分:2)
只需将新的xml布局设计为对话框并创建一个新活动,并将其主题设置为活动标记ex下的清单文件中的@android:style / Theme.Dialog:
<activity android:theme="@android:style/Theme.Dialog" android:name="LocationDialog"> </activity>
在Dialog中单击监听器代码,将活动作为
启动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);
}
这会将您的新活动作为一个对话框开始,您可以在其中轻松应用您的操作。
答案 1 :(得分:2)
我相信这是因为对话框没有阻止。一旦显示,处理就会移动到下一行代码。仍会显示该对话框,等待用户交互。