2017-11-30 20 views
-1

메서드 내에서 AsyncTask의 결과를 확인하고 싶습니다. HttpRequest에 결과가 성공적인 경우 함수 내에서 추상 메서드를 사용하여 올바른 반환 값 가져 오기

private boolean isRequestSuccessfull(){ 
    boolean test = false; 
    new HttpRequest() { 
     @Override 
     public void onResponseReceived(JSONObject result) { 
      if (result.optBoolean("success")){ 
       return true; 
      } else { 
       return false; 
      } 
     } 
    }.get(getBaseContext(), "myUrl"); 

    return test; 
} 

확인 isRequestSuccessfull.

HttpRequest는 서버를 호출하는 AsyncTask이며 onResponseReceived는 요청 결과를 가져올 수있는 추상 메소드입니다.

onResponseReceived 안에 반환 값을 가질 수 없어이 코드는 작동하지 않습니다. onResonseReceived에서 값 테스트를 할당하고 반환 할 수 없습니다. 반환이 할당 전에 실행되기 때문입니다.

어떻게 해결할 수 있습니까?

답변

0

boolean을 메서드에서 반환하는 대신 void으로 만들고 응답을받은 경우 익명 HttpRequest 익명의 사용자에게 전화를 겁니다.

new HttpRequest() { 
    @Override 
    public void onResponseReceived(JSONObject result) { 
     if (result.optBoolean("success")) { 
      callMethodWithBoolean(true); 
     } else { 
      callMethodWithBoolean(false); 
     } 
    } 
}.get(getBaseContext(), "myUrl"); 
+0

답변 주셔서 감사 합니다만 callMethodWithBoolean이 HttpRequest 내부에서 선언되어야한다는 것을 이해하지 못합니까? 이 방법이해야 할 일은 무엇입니까? – Vodet