ユーザーが有効な電子メールとパスワードを入力してログインに失敗したときにアラート ダイアログを表示しようとしています。ログイン プロセスは HTTP 要求と JSON を処理する必要があるため、すべてを AsyncTask に入れましたが、これが、アラート ダイアログが表示されない理由です (表示されないことを願っています)。したがって、これはクラスcheckUser
内onPostExecute
で呼び出される method です。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
ため、アラートダイアログを表示する前に閉じることにしました。しかし、それでも問題は解決していません。