2016-09-01 1 views
0
안드로이드

에 final이 아닌 지역 변수를 참조 할 수 없습니다 나는이 발리를 사용 http 요청 제출하기의 방법에있어서,발리는 :

private boolean SaveInformationToServer(Information information) 
{ 

    RequestQueue queue = Volley.newRequestQueue(this); 

    StringRequest stringRequest = new StringRequest(Request.Method.POST, url, 
       new Response.Listener<String>() { 
        @Override 
        public void onResponse(String response) {       
         try{ 
          return true; 
         } 
         catch (Exception ex){ 
          return false; 
         } 
        } 
       }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       return false; 
      } 
     }); 

     queue.add(stringRequest); 
    } 

가 나도 true 또는 false을 반환하려면이 방법을 필요로하지만, 현재이주고를 오류 void method cannot return a value. 변수를 시도한 다음 cannot refer to the non-final local variable inside an inner class을 얻었습니다.

이 메서드가 호출자에게 boolean 값을 반환하도록하려면 어떻게해야합니까?

+1

콜백을 사용하십시오. '안드로이드 비동기 콜백 반환 값'또는 무엇인가를위한 Google –

답변

1

반환 유형 onResponse은 무효이며 익명 클래스의 함수이므로 익명 클래스의 호출자에게 발리 요청자의 값을 반환 할 수 없습니다.

함수를 생성하여 발리 응답으로 호출하고 플래그를 유지하는 대신 코드를 실행하여 코드를 구조적이고 읽기 쉽게 유지할 수 있습니다 (onSuccess에서 플래그를 설정할 수도 있음).

void onSuccess(String response){ 
// do what you want to do 
} 
void onError(VolleyError error){ 
// do what you want to do 
} 
private void SaveInformationToServer(Information information) 
     { 

    RequestQueue queue = Volley.newRequestQueue(this); 

    StringRequest stringRequest = new StringRequest(Request.Method.POST, url, 
       new Response.Listener<String>() { 
        @Override 
        public void onResponse(String response) {       
         onSuccess(response); 
        } 
       }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       onError(error); 
      } 
     }); 

     queue.add(stringRequest); 
    } 
관련 문제