有人可以告诉我为什么我不能在自定义对话框方法中调用我的按钮上的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;
}
提前致谢
答案 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
。因此,如果您想要关闭对话框,请使用对话框的实例,而不是创建新的。