gpt4 book ai didi

Android - 在 AsyncTask 中显示警报对话框

转载 作者:行者123 更新时间:2023-11-29 18:04:15 26 4
gpt4 key购买 nike

当用户未能输入有效的电子邮件和密码进行登录时,我试图显示一个警告对话框。由于登录过程必须处理 HTTP 请求和 JSON,我将它们全部放在 AsyncTask 中并且我是不确定这是否是我的警报对话框无法显示的问题(我希望不是)。所以这是 checkUser 方法,它在 AsyncTask 类的 onPostExecute 中调用:

    public void checkUser(JSONObject json){
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
if (tag == login_tag){
// check for login response
try {
if (json.getString(KEY_SUCCESS) != null) {
String res = json.getString(KEY_SUCCESS);
if(Integer.parseInt(res) == 1){
// user successfully logged in
// Store user details in SQLite Database
// code omitted
} else{
// Error in login
mProgressDialog.dismiss();
builder.setMessage("Incorrect username/password")
.setTitle("Error")
.setNeutralButton("OK", new OnClickListener() {
public void onClick(final DialogInterface dialog,final int which) {
dialog.cancel();
}
}).create().show();

}
}
} catch (JSONException e) {
e.printStackTrace();
}
}

不知何故,我的警告对话框永远无法显示,我也不知道为什么。如果您知道这个问题的原因是什么,请帮助我。非常感谢!

编辑:原来我只在执行此方法后关闭了我的Progress Dialog,所以我决定在显示警报对话框之前关闭它。但是还是没有解决问题。

最佳答案

所以我自己用这种方式解决了这个问题:不知何故,警报对话框只能在方法 checkUser 之外工作。所以我将错误 if 子句中的位移到外面,在 onPostExecute() 中 Progress 对话框的 dismiss() 下方:

protected void onPostExecute(JSONObject json) {
checkUser(json);
mProgressDialog.dismiss();
try {
if (json.get(ERROR_MSG) != null){
String errorMsg = json.getString(ERROR_MSG);
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
builder.setMessage(errorMsg)
.setTitle("Error")
.setNeutralButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
}).create().show();
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

瞧,它起作用了!P.s:我仍然不知道为什么当放在 checkUser 中时对话框无法显示。

关于Android - 在 AsyncTask 中显示警报对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14184514/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com