使用安卓的dialog的loading弹窗时,.show()可以正常弹出,但是用.dismiss()不能关闭,只能手动点空白区域关闭。
我用的是第三方的loading库,名字叫 ZLoadingDialog
比如点击一个按钮发送验证码,点击按钮就调用.show(),此时可以正常弹出,然后在发送验证码之后点调用.dismiss()却不能自动关闭。也许我描述的不够明白,贴代码吧。
效果图👇
代码👇
//发送邮箱验证码逻辑
ed4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//弹出loading , 让用户不会以为程序卡死了 , 缓解尴尬
DialogLoad dialogLoad = new DialogLoad(Register.this);
dialogLoad.dialogLoading();
String Rurl = myurl;
String Register_useremail = "useremail="+ed3.getText().toString();
String appid = "&appid=10000";
boolean bl = Register_useremail.contains("@");
boolean bl1 = Register_useremail.contains(".");
if (TextUtils.isEmpty(ed3.getText())) {
Toasty.warning(Register.this, "邮箱不能为空", Toasty.LENGTH_SHORT).show();
} else if (!bl || !bl1) {
Toasty.warning(Register.this, "邮箱格式不正确\n注意中英文符号的输入", Toasty.LENGTH_LONG).show();
} else {
ed4.setEnabled(false);//发送之后设置发送按钮为不可点击 ,60秒之后再恢复
/*
* 在线程里调用网络请求的方法,来发送验证码,并且把返回值发送给主线程
*/
new Thread(() -> {
String value = ThreadHttp.HttpDo(Rurl, "", "", Register_useremail, appid, "");
Message message = new Message();
message.what = 2;
message.obj = value;
mhandler.sendMessage(message);
}).start();
dialogLoad.dismiss();// 发送给验证码的message发送到mhandler之后 就关闭loading
}
}
});
如果还需要看看dismiss方法 那我也贴出来吧
public void dismiss() {
if (mDismissOverride != null) {
mDismissOverride.run();
return;
}
run日志我也看不明白,也没有报错,但是dismiss明明就没生效啊!我也尝试过用.hint来隐藏loading弹窗,一样是没用,也尝试过把dismiss放在不同的地方,比如放在线程里面,也是没用。请求解答一下,感谢感谢!