当用户无法输入有效的电子邮件和密码登录时,我试图显示一个警报对话框。由于登录过程必须处理 HTTP 请求和 JSON,我将其全部放在 AsyncTask 中,我不确定是否这就是为什么我的警报对话框无法显示的问题(我希望不会)。所以这是在类checkUser
中调用的方法:onPostExecute
AsyncTask
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
在执行此方法后关闭它,所以我决定在显示警报对话框之前将其关闭。但它仍然没有解决问题。