2016-08-25 4 views
-1

일부 Pojo 모델을 만들었으며 api에서 내 안드로이드 앱에 데이터를 가져오고 있습니다. 버튼 클릭시 데이터를 다운로드해야합니다.개장은 오류를 발생합니다.

public class DownloadMain extends Fragment implements Callback<Partner> { 

    private static final String TAG = DownloadMain.class.getSimpleName(); 

    private Button dloadPartners; 
    private Call callPartners; 

    public DownloadMain() {} 

    public DownloadMain newInstance() { return new DownloadMain(); } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 


     View view = inflater.inflate(R.layout.download_main, container, false); 

     dloadPartners = (Button) view.findViewById(R.id.downloadPartners); 
     dloadPartners.setOnClickListener(btnListener); 

     callPartners = APIHelper.getApiService().getPartners(); 

     return view; 
    } 

    Button.OnClickListener btnListener = (new Button.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      callPartners.enqueue(DownloadMain.this); 
     } 
    }); 

    @Override 
    public void onResponse(Call call, Response response) { 

     if(response.body() == null) { 
      try { 
       response.errorBody().string(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      Toast.makeText(getActivity(), "No Partners!", Toast.LENGTH_SHORT).show(); 
     } else { 
      List<Partner> partners = (List<Partner>) response.body(); 
      Log.d(TAG, "Number of partners received: " + partners.size()); 
     } 

    } 

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

    } 
} 

그래서 문제가 여기에 있습니다 : 여기

내가이 만든 방법이다. 내가 버튼을 클릭하면 알림 (토스트)이 "파트너 없음!"이라고 표시됩니다. 그리고 다시 클릭하면 그것은 나에게 오류 발생 : 개조가 데이터를 받고되지 않는 이유 나는 그것을 밖으로 알아낼 수 없습니다

callPartners.enqueue(DownloadMain.this); 

: 버튼의 onclick 방법이 라인에서

IllegalStateException: Already executed. at retrofit2.OkHttpCall.enqueue(OkHttpCall.java:78)

합니다.

질문 :이 문제를 해결하는 데 도움을 줄 수 있습니까?

답변

1

한 번만 전화를 걸 수 있습니다. 더 많은 전화를해야 할 경우 복제본을 사용하십시오. javadoc에서 :

An invocation of a Retrofit method that sends a request to a webserver and returns a response. Each call yields its own HTTP request and response pair. Use clone() to make multiple calls with the same parameters to the same webserver; this may be used to implement polling or to retry a failed call.

는 기본적으로 코드는이 문제의 한 부분을 해결

callPartners.clone().enqueue(DownloadMain.this); 
+0

해야한다. 아직도 API에서 파트너를 얻을 수 없습니다. – RubyDigger19

관련 문제