2017-10-18 3 views
1

내가/연결할 Retrofit2의 onResponse 콜백 내부 문자열을 추가 할 onResponse 콜백 내부 문자열을 전달 할 수 없습니다안드로이드 개조 2-

글로벌 데이터가 저장되어있는 경우

Boolean isSaved = "false"; 
String message = ""; 


    Queries queries = Server.getClient().create(Queries.class); 
    Call<ResponseModel> responseModelCall = queries.products(param1, param2); 

    responseModelCall.enqueue(new Callback<ResponseModel>() { 
     @Override 
     public void onResponse(Call<ResponseModel> call, Response<ResponseModel> response) { 
      if(response.isSuccessful()) { 
       if(response.body().getCode().equals("1")) { 
        message = "Success"; 
        isSaved = true; 
       } else { 
        message = "Failed"; 
        isSaved = false; 
       } 
      } else { 
        message = "Error"; 
      } 
     } 

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

     } 
    }); 

    if(isSaved){ 
     Toast.maketext(getActivity, "Congrats: "+message, LENGTH_SHORT).show(); 
    } else { 
     Toast.maketext(getActivity, "I am sorry: "+message, LENGTH_SHORT).show(); 
    } 

변수는 다음 토스트 입니다 "축하"

하지 경우 "미안"

내가 문자열 내가 예스 러운 것으로 나타났습니다 d가 onResponse에서 작동하지 않습니다. 하지만 부울은 성공했습니다.

+0

onResponse에 if 조건을 이동하십시오. –

답변

3

건배를 표시하려면 onResponse 안에 넣어야합니다.

responseModelCall.enqueue(new Callback<ResponseModel>() { 
     @Override 
     public void onResponse(Call<ResponseModel> call, Response<ResponseModel> response) { 
      if(response.isSuccessful()) { 
       if(response.body().getCode().equals("1")) { 
        message = "Success"; 
        isSaved = true; 
       } else { 
        message = "Failed"; 
        isSaved = false; 
       } 
      } else { 
        message = "Error"; 
      } 

      if (isSaved){ 
       Toast.maketext(getActivity, "Congrats: "+message, LENGTH_SHORT).show(); 
      } else { 
       Toast.maketext(getActivity, "I am sorry: "+message, LENGTH_SHORT).show(); 
      } 
     } 

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

     } 
    }); 
+0

안녕하세요, 토스트가 그 예입니다. 그 문자열이 다른 것으로 필요합니다. BTW, 나는 해결책을 얻었다. void/method/function (php 안드로이드 C#을 혼동하여 혼란스럽게 만들었습니다. 프로그래머가 될 이유가 궁금합니다.). 어쨌든, 노력에 감사드립니다. – Maki

+0

@Maki '콜백'또는 '리스너'를 의미 했습니까? 그것은 확장 성을위한 더 좋은 방법입니다! 혼동하지 마십시오, 귀하의 질문은 다른 프로그래머에게 도움이 될 것입니다. 고맙습니다! – kimkevin

+0

문제는 문자열이 전역 변수로 선언 된 경우에도 onResponse 내부에 추가 된 문자열을 사용할 수없는 이유입니다. 마찬가지로 onResponse 내부에 추가 된 부울을 사용할 수 있습니다. – Maki

1

토스트가 트리거 될 수 있도록 토스트의 상태를 OnResponse 안에 넣기 만하면됩니다.