Android自定义对话框方法

时间:2013-11-04 22:08:03

标签: android dialog

有人可以告诉我为什么我不能在自定义对话框方法中调用我的按钮上的setOnClickListener方法?有没有办法在这种对话中处理点击?这是代码:

private Dialog wifiDialog() {
    final Dialog dialog = new Dialog(activity);
    dialog.setContentView(R.layout.wifi_dialog);
    dialog.setTitle("Upload");

    Button no = (Button) findViewById(R.id.button_wifi_No);
    Button yes = (Button) findViewById(R.id.button_wifi_Yes);

    no.setOnClickListener(new OnClickListener() { // runtimeException

        @Override
        public void onClick(View v) {
            wifiDialog().dismiss();
        }
    });

    return dialog;
}

提前致谢

1 个答案:

答案 0 :(得分:3)

试试这个。

private Dialog wifiDialog(Context context) {
    final Dialog dialog = new Dialog(context);
    LayoutInflater layoutInflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View view = layoutInflater.inflate(R.layout.wifi_dialog,null);
    dialog.setContentView(view);
    dialog.setTitle("Upload");

    Button no = (Button) view.findViewById(R.id.button_wifi_No);
    Button yes = (Button) view.findViewById(R.id.button_wifi_Yes);

    no.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            dialog.dismiss();
        }
    });

    return dialog;
}

并使用:

wifiDialog(this); // In activity context;

我解释你为什么会收到错误。你循环你的逻辑。在onClick方法中,您尝试创建另一个对话框并将相同的click listener设置为相同的button。因此,如果您想要关闭对话框,请使用对话框的实例,而不是创建新的。