2013-01-06 3 views
1

사용자가 유효한 이메일 및 비밀번호를 입력하지 못하면 로그인 대화 상자를 표시하려고합니다. 로그인 프로세스가 HTTP 요청 및 JSON을 처리해야하기 때문에 AsyncTask에서 경고 대화 상자가 표시되지 않는 문제인지 여부는 확실하지 않습니다. Android - 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(); 
        } 
       } 

는 어떻게 든 내 경고 대화 상자가 표시되지 않을 수 있습니다 내가 왜 모르는 : 그래서 이것은 AsyncTask 클래스의 onPostExecute 내에서 호출되는 방법 checkUser이다. 이 문제의 이유가 무엇인지 알면 저를 도와주세요. 고마워요!

EDIT :이 메서드를 실행 한 후에 만 ​​Progress Dialog을 닫습니다. 따라서 경고 대화 상자를 표시하기 전에이를 닫습니다. 그러나 그것은 여전히 ​​문제를 해결하지 못했습니다. 실종 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(); 

답변

2

1

그래서 나는이 자신을 이런 식으로 해결 : 어떻게 든 경고 대화는 방법 checkUser 외부에서 작동합니다.

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(); 
      } 
     } 

을 그리고 짜잔, 그것을 작동 : 그래서 onPostExecute()에서 진행 대화 상자의 dismiss() 아래의 경우 절 외부 오류 내에서 비트를 이동! P .: 아직 checkUser 내에 넣을 때 대화 상자가 표시되지 않는 이유는 아직도 알지 못합니다.

+0

나는 그것을 추가하려고했지만 여전히 슬프게도 보여줄 수 없다. –

+0

@strawberryjam : 먼저 제어가 다른 블록으로 들어가고 plz가 최신 코드 –

+0

으로 질문을 편집하십시오. 제안 해 주셔서 감사합니다! 방금'create() '를 추가하여 코드를 편집했지만 아직 문제가 남아 있습니다. –

관련 문제