Android自定义对话框方法
有人能告诉我为什么不能在自定义对话框方法中对buton调用Android自定义对话框方法,android,dialog,Android,Dialog,有人能告诉我为什么不能在自定义对话框方法中对buton调用setOnClickListener方法吗?有没有一种可能的方法来处理这种对话框中的点击?代码如下: private Dialog wifiDialog() { final Dialog dialog = new Dialog(activity); dialog.setContentView(R.layout.wifi_dialog); dialog.setTitle("Upload"); Button
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;
}
提前感谢试试这个
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
方法中,您尝试创建另一个对话框,并将相同的单击侦听器
设置为相同的按钮
。因此,如果您想取消对话框,请使用dialog的实例,而不是创建新对话框。试试这个
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
方法中,您尝试创建另一个对话框,并将相同的单击侦听器
设置为相同的按钮
。因此,如果您想取消对话框,请使用dialog的实例,而不是创建新对话框。试试这个
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
方法中,您尝试创建另一个对话框,并将相同的单击侦听器
设置为相同的按钮
。因此,如果您想取消对话框,请使用dialog的实例,而不是创建新对话框。试试这个
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
方法中,您尝试创建另一个对话框,并将相同的单击侦听器
设置为相同的按钮
。因此,如果您想取消对话框,请使用对话框实例,而不是创建新的对话框。请不要只发布代码,而不解释更改的内容和原因,否则OP(和未来的访问者)将一无所获。@Simon抱歉。我会考虑到这一点。请不要只发布代码,而不解释更改的内容和原因,否则OP(和未来的访问者)将一无所获。@Simon抱歉。我会考虑到这一点。请不要只发布代码,而不解释更改的内容和原因,否则OP(和未来的访问者)将一无所获。@Simon抱歉。我会考虑到这一点。请不要只发布代码,而不解释更改的内容和原因,否则OP(和未来的访问者)将一无所获。@Simon抱歉。我会考虑这一点