找到按钮的父对话框

时间:2010-09-02 10:44:25

标签: android dialog

我有一个包含按钮的警告对话框。该按钮以某种XML定义,并使用Dialog.setContentView()设置布局。

该按钮有一个监听器类,我想知道如果有的话,我可以从onClick(View v)方法访问该对话框。

这样做的原因很简单,我希望能够忽略对话框 - 所以如果有更容易/更好的方法来做到这一点,那么知道这将是有用的!

3 个答案:

答案 0 :(得分:1)

使用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);
    }
}

答案 1 :(得分:0)

创建自定义对话框类并在其中定义按钮。类似的东西:

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();
    }

答案 2 :(得分:0)

现在我只是将对话框的引用传递给了listener类,然后在适当的时候调用了dismiss()。

这似乎不是最好的方式 - 有更好的方法吗?

创建自定义对话框对我来说似乎没必要......它不需要任何与众不同的东西。