我正在创建一个自定义 AlertDialog
要在按钮上显示加载,请单击事件侦听器。警报对话框 show()
功能正常,但 dismiss()
功能不工作
public AlertDialog LoadDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
LayoutInflater inflater = activity.getLayoutInflater();
builder.setView(inflater.inflate(R.layout.dialog_show_loading, null));
builder.setCancelable(true);
dialog = builder.create();
if (dialog != null)
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
return dialog;
}
要显示加载按钮,请单击不同的类,我只需调用:
new LoadingDialog(context).LoadDialog().show(); //works fine
我称之为:
new LoadingDialog(context).LoadDialog().dismiss(); // does not work
4条答案
按热度按时间omtl5h9j1#
你在做什么
new LoadingDialog(context).LoadDialog().dismiss(); // does not work
这将创建一个新的对话框引用并尝试取消它,而不是使用以前创建的相同对话框。您需要将创建的对话与此对话存储在一起-
new LoadingDialog(context).LoadDialog().show(); //works fine
然后使用.dismiss
在存储的变量上8ljdwjyq2#
你当然在打电话
dismiss
与第一次调用创建的示例不同show
,作为LoadingDialog
方法在每次调用时创建一个新示例。您需要存储由创建的示例
show
打电话给我dismiss
在那种情况下。kmpatx3s3#
没有关闭函数alertdialog.builder类。而是使用,
打电话给我
hgncfbus4#
您应该将返回的对话框存储到一个变量中,否则您所做的就是创建一个新的
AlertDialog
示例和调用show()
然后是另一个新示例并调用dismiss()
(因此一个从未出现过):然后你可以打电话:
或