我有一個包含一個按鈕的提示對話框。該按鈕在某些XML中定義,並且使用Dialog.setContentView()設置佈局。找到一個按鈕的父對話框
該按鈕有一個監聽器類,我想知道如何使用onClick(View v)方法訪問對話框。
原因很簡單,我希望能夠關閉對話框 - 所以如果有一個更簡單/更好的方法來做到這一點,那麼這將是有益的知道!使用onCreateDialog()
方法從Activity
類
我有一個包含一個按鈕的提示對話框。該按鈕在某些XML中定義,並且使用Dialog.setContentView()設置佈局。找到一個按鈕的父對話框
該按鈕有一個監聽器類,我想知道如何使用onClick(View v)方法訪問對話框。
原因很簡單,我希望能夠關閉對話框 - 所以如果有一個更簡單/更好的方法來做到這一點,那麼這將是有益的知道!使用onCreateDialog()
方法從Activity
類
簡單的解決方案:
// member variable
Dialog mDialog;
protected Dialog onCreateDialog(int id) {
Builder builder = new AlertDialog.Builder(mContext);
switch (id) {
case DELETE_ALL_DIALOG:
builder.setCancelable(false);
builder.setPositiveButton(R.string.ok, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//do what you want
}
});
builder.setNegativeButton(R.string.cancel, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dismissDialog(DELETE_ALL_DIALOG); // thats what you are looking for
}
});
builder.setMessage(R.string.delete_all_bookmarks_question);
mDialog = builder.create();
mDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
return mDialog;
default:
return super.onCreateDialog(id);
}
}
創建一個自定義對話框類,並在那裏定義按鈕。喜歡的東西:
public class CustomizeDialog extends Dialog implements OnClickListener {
Button okButton;
public CustomizeDialog(Context context) {
super(context);
/** 'Window.FEATURE_NO_TITLE' - Used to hide the title */
requestWindowFeature(Window.FEATURE_NO_TITLE);
/** Design the dialog in main.xml file */
setContentView(R.layout.main);
okButton = (Button) findViewById(R.id.OkButton);
okButton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
/** When OK Button is clicked, dismiss the dialog */
if (v == okButton)
dismiss();
}
我應該指出,我的聽衆目前是一個單獨的類,而不是一個內部的 – 2010-09-02 10:56:15
然後,你必須像你一樣通過參考。你有沒有考慮使用AlertDialog.Builder,也許使用setNegativeButton(CharSequence文本,DialogInterface.OnClickListener監聽器) – BeRecursive 2010-09-03 07:43:02
現在我簡單的通過對話參考到監聽器類,然後叫解僱()在適當的時候。
這似乎不是最好的方式 - 有更好的嗎?
創建自定義對話框對我來說似乎沒有必要......它不需要任何不尋常的東西。
如果你不想把對話封裝在一個單獨的類中,看起來是最好的方法。必須是活動課中的那個或全局對話框 – BeRecursive 2010-09-02 13:42:28
這樣的工作,但似乎是不必要的邏輯,當真正的對話框應該作爲自定義類被提取出來,如果你問我:) – BeRecursive 2010-09-02 10:54:08