2013-01-06 149 views
1

我試圖顯示一個警告對話框,當用戶輸入有效的電子郵件和密碼登錄失敗。由於登錄過程必須處理HTTP請求和JSON,我把它在AsyncTask中,我不確定這是爲什麼我的警報對話框不能顯示的問題(我不希望)。因此,這是方法checkUser,這就是所謂內AsyncTask類的onPostExecuteAndroid - 在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,所以我決定在顯示警報對話框之前關閉它。但它仍然沒有解決問題。

回答

2

所以我解決了這個我自己是這樣的:莫名其妙的警告對話框中只能方法checkUser之外。所以我移動比特誤差範圍內,如果條款外,進度對話框的dismiss()低於onPostExecute()

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:我仍然不知道爲什麼對話框不能顯示在checkUser之內。

1

失蹤builder.create()

// Error in login 
builder.setMessage("Incorrect username/password") 
    .setTitle("Error") 
    .setNeutralButton("OK", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog,int which) { 
            dialog.cancel();              
    } 
}).create().show(); 
+0

我嘗試添加,但它仍然不能顯示,悲哀。 –

+0

@strawberryjam:首先確保控制進入其他區塊,然後用最新代碼 –

+0

編輯你的問題,謝謝你的建議!我只是通過添加'create()'來編輯我的代碼,但問題仍然存在。 –