我的應用程序創建一個AlertDialog,其中用戶輸入名稱進行保存。當用戶點擊保存按鈕時,onClickListener將檢查重複的名稱。如果名稱已經存在,將彈出另一個對話框來提醒用戶現有的數據將被替換。然後用戶可以選擇取消並返回更改爲新名稱或繼續進行數據替換。
當第二個對話框出現時,我希望第一個對話框仍然可見,直到我叫解僱。但是,第一個AlertDialog在第二個AlertDialog出現之前消失。當按鈕被點擊時,這將被自動調用。這是一個錯誤還是設計?
我寫了下面的測試用例,我檢查了3個設備:Nexus S Android 4.0,HTC Rezound android 2.3和Motorola Droid Bionic android 2.3。AlertDialog這是一個錯誤?
佈局
<?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>
代碼
public class AlertDialogBug extends Activity
{
static final int DIALOG_ALERT_ID = 1;
AlertDialog alertDlg;
TextView message;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
message = (TextView) findViewById(R.id.message);
Button showButton = (Button) findViewById(R.id.show_btn);
showButton.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
showDialog(DIALOG_ALERT_ID);
}
});
}
private AlertDialog createAlertDialog()
{
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Bug?");
builder.setPositiveButton("OK", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
// No dismiss, cancel, finish, or removeDialog,
// but the dialog will disappear when this button is clicked.
}
});
alertDlg = builder.create();
alertDlg.setOnDismissListener(new OnDismissListener()
{
@Override
public void onDismiss(DialogInterface dialog)
{
message.setText("onDismiss was called");
}
});
return alertDlg;
}
@Override
protected Dialog onCreateDialog(int id)
{
switch (id)
{
case DIALOG_ALERT_ID:
return createAlertDialog();
default:
return super.onCreateDialog(id);
}
}
}
我原來寫的保存對話框,與Android的活動:主題= 「@安卓風格/ Theme.Dialog」。 UI在Nexus S和Rezound上看起來很好,但在Droid Bionic上看起來很糟糕(編輯框和按鈕僅佔用一半寬度,另一半則爲空白)。
謝謝,這個工程,它可以節省我重寫我的應用程序。上面的佈局是針對活動而不是提示對話框的。我的投票被拒絕了,因爲我沒有足夠的聲望,否則你會得到2票。 –