【问题标题】:Closing an AlertDialog box after a button has been clicked单击按钮后关闭警报对话框
【发布时间】:2013-01-30 16:51:48
【问题描述】:
我有以下代码,如果未检测到网络连接,则会向用户显示一个对话框。
private void createNoNetworkDialog() {
LayoutInflater inflater = LayoutInflater.from(this);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
View view = inflater.inflate(R.layout.offline_mode_dialog,null);
builder.setView(view);
builder.show();
}
此对话框中有两个按钮,它们具有为其 onClick 操作定义的方法。我想在按下这些按钮中的任何一个后关闭弹出对话框。有什么想法吗??
【问题讨论】:
标签:
java
android
android-alertdialog
layout-inflater
【解决方案1】:
是的,从Listener 的onClick 调用dismiss(),因为传递了DialogInterface 引用,这允许解雇。
例如
builder.setPositiveButton ("Yes", new DialogInterface.OnClickListener()
{
public void onClick (DialogInterface dialog, int which)
{
//do stuff beforehand
dialog.dismiss();
}
});
或者,如果您的按钮在布局内,请显示对话框并保留对它的引用 (final AlertDialog dialog = builder.show())。然后使用dialog.findViewById() 找到相应的按钮。分配一个普通的View.OnClickListener 并使用您持有的对话框引用在其中调用dismiss()。
【解决方案2】:
试试这个,我正在使用自定义布局,它对我有用。初始化Buttoncuston_dialog.findViewById(),然后写OncliclListner()。它会工作
final Dialog custon_dialog = new Dialog(Login.this);
custon_dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
custon_dialog.setContentView(R.layout.forget_custom_dialog);
custon_dialog.setCancelable(true);
Button submit_Btn = (Button) custon_dialog
.findViewById(R.id.submit);
Button cancel_Btn = (Button) custon_dialog
.findViewById(R.id.cancel);
submit_Btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//do your stuf
}
});
cancel_Btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
custon_dialog.dismiss();
}
});
custon_dialog.show();
}