0

有人能告诉我为什么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;
}

提前致谢

4

1 回答 1

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。所以如果你想关闭你的对话框,请使用对话框的实例,而不是创建新的。

于 2013-11-04T22:10:50.983 回答