带有Button onClick事件的android自定义对话框

时间:2016-07-20 08:23:42

标签: android dialog

我有这样的CustomDialog.java:

public class CustomDialog {
Dialog dl;
public void ShowDialog(Context context, String message) {
    dl = new Dialog(context);
    dl.setContentView(R.layout.custom_dialog);

    TextView tv_message = (TextView) dl.findViewById(R.id.textViewMessage);

    tv_message.setText(message);

    Button bt_yes = (Button)dl.findViewById(R.id.buttonYes);
    Button bt_no = (Button)dl.findViewById(R.id.buttonNo);

    bt_yes.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            CheckYes();
        }
    });
    bt_no.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            dl.dismiss();
        }
    });
    dl.show();

}

public Boolean CheckYesNo(Boolean check){
    return check;
}

public Boolean CheckYes() {
    return true;
}

public void CloseDialog() {
    dl.dismiss();
}

}

这是Activity中使用CustomDialog的代码:

CustomDialog cdl = new CustomDialog ();
                        cdl.ShowDialog(Activity1.this, "test");
                        if (cdl.CheckYesNo(true)) {
                            // doing something with data and go to Activity 2
                        }
                        else {
                            cdl.CloseDialog();
                        }

我想要这样:
1.在Activity1中,单击ImageButton时,将显示CustomDialog 2.在CustomDialog显示之后,如果单击Button yes,它会对数据执行某些操作并转到Activity2 3.如果单击按钮否,CustomDialog将关闭并且不对数据执行操作。

但我的问题是:
当单击ImageButton,CustomDialog显示时,我想要处理数据的代码将执行并自动转到Activity2。
我无法选择是或否来点击 我认为按钮是onClick事件中的问题。
如何解决?

4 个答案:

答案 0 :(得分:7)

  

参数初始化

X = X[:200]
y = y[:200]
  

您可以在想要使用的地方使用

  Dialog dialog;

答案 1 :(得分:1)

您的代码看起来没问题,但对于按钮的onClickListeners,我不明白为什么当您可以在CheckYes()做任何想做的事情时,你仍然想要调用onClick {1}}方法。

这就是代码的样子:

public void ShowDialog(final Context context, String message) {
    dl = new Dialog(context);
    dl.setContentView(R.layout.custom_dialog);

    TextView tv_message = (TextView) dl.findViewById(R.id.textViewMessage);

    tv_message.setText(message);

    Button bt_yes = (Button)dl.findViewById(R.id.buttonYes);
    Button bt_no = (Button)dl.findViewById(R.id.buttonNo);

    bt_yes.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //You said you wanted to do something with the data? What data? Anyway, this is where you can do it
            //do whatever with the "data"
            //this is where you want to go to another activity
            Intent activity2 = new Intent(context, <Your-Activity2-Name>.class);
            context.startActivity(activity2);
            //and you still want to dismiss the dialog
            dl.dismiss();
        }
    });
    bt_no.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            dl.dismiss();
        }
    });
    dl.show();

}

我希望这会有所启发。请详细说明“单击YES按钮时对数据执行某些操作”的含义“ - 当您说不能选择是或否单击时,您的意思是什么?

答案 2 :(得分:0)

对我来说,我必须确保在对话框中使用findViewById访问之前创建了对话框。在我创建对话框的内部类中,在OnStart回调函数中我访问了按钮。当我说.show()时,我尝试在课外进行,但它给了我一个空指针异常。

对我而言,我只能通过对话框访问对话框中的按钮iD。我不能只做getActivity()。findViewById(R.id.blah)

这是我使用的代码:

        @Override
    public void onStart(){
        super.onStart();


        if(getDialog() == null){
            return;
        }
        else {

            ImageButton closeButton = (ImageButton)getDialog().findViewById(R.id.closeButton);

            closeButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    getDialog().dismiss();
                }
            });

        }

答案 3 :(得分:-1)

    txt_showdailog.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           Dialog dialog =new Dialog(context);
            dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
            dialog.setContentView(R.layout.bluetooothdialog);
            dialog.show();


        }
    });