2017-12-30 10 views
-2

나는 안드로이드 초보자이야 간단한 개조의 예를 작성했습니다 :갱신 된 onResponse에서 값을 반환하는 방법은 무엇입니까?

LOGININTERFACE mAPISERVICE; 
    mAPISERVICE= LOGINGENERATOR.getAPIServices(); 
    mAPISERVICE.savePost("0016642902","0016642902","password").enqueue(new Callback<LGOINMODEL>() { 
     @Override 
     public void onResponse(Call<LGOINMODEL> call, Response<LGOINMODEL> response) { 
      LGOINMODEL output=response.body(); 
          if(response.isSuccessful()) 
       test[0] ="behzad behzad behzad"; 
     } 

     @Override 
     public void onFailure(Call<LGOINMODEL> call, Throwable t) { 

     } 
    }); 

을하지만,이 라인 :

 test[0] ="behzad behzad behzad"; 

그것은 값을 반환 할 수 없으며, 어떤 자습서를 읽지 않은 , 예제 또는 스택 오버플로에 대한 다른 게시물, 그래서 여전히이 문제를 해결할 수 없습니다.

+0

'테스트'배열을 반환 하시겠습니까? – joao86

답변

0

콜백이 필요하므로이 함수를 호출하여 서버에서 값을 가져올 때마다 콜백을 전달할 수 있고 결과가 있으면 다시 돌려 줄 수 있습니다.

콜백 인터페이스

MyResultsListener

public interface MyResultsListener{ 

    public void onData(LGOINMODEL loginModel); 
    public void onFailed(); 

} 

지금 일부 기능은 다음 결과를 다시 얻을 수있는 매개 변수로 MyResultsListener 기준을 통과 당신이 만든 전화는 가정 된 .java.

public void makeServerCall(MyResultsListener listener){ 

LOGININTERFACE mAPISERVICE; 
    mAPISERVICE= LOGINGENERATOR.getAPIServices(); 
    mAPISERVICE.savePost("0016642902","0016642902","password").enqueue(new Callback<LGOINMODEL>() { 
     @Override 
     public void onResponse(Call<LGOINMODEL> call, Response<LGOINMODEL> response) { 
      LGOINMODEL output=response.body(); 
          if(response.isSuccessful()) 
       test[0] ="behzad behzad behzad"; 
       //for getting back data to calling class or function 
       listener.onData(output); 
     } 

     @Override 
     public void onFailure(Call<LGOINMODEL> call, Throwable t) { 
       //for failure handling 
       listener.onFailed(); 
     } 
    }); 
} 
+0

내 문제에주의를 기울여 주셔서 감사합니다, 나는 makeServerCall 문자열 값을 반환하고 싶습니다, 어떻게 할 수 있습니까? – behzad

+0

비동기 코드이기 때문에 makeservercall에서 문자열 값을 반환 할 수 없습니다. api 호출이 성공하면 결과를 사용할 수 없으므로 즉시 사용할 수 없으므로 listener.onData()를 사용하여 사용할 수있는 경우 콜백을 사용하여 데이터를 가져 오는 이유가 바로 여기에 있습니다. –

+0

ok, listener.onData에서 호출자 메서드로 값을 반환 할 수 있습니까? – behzad