2017-10-18 74 views
1

我想連接/追加Retrofit2的onResponse回調內部的字符串中的字符串Android的改造2 - 不能通過onResponse回調

全局變量

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 –

回答

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

嗨,吐司只是一個例子,我需要該字符串到其他東西。順便說一句,我有一個解決方案。我通過它在一個void /方法/函數(我不知道該怎麼稱呼它,即時混淆做PHP的Android的C#,讓我想知道爲什麼我選擇成爲程序員)。無論如何,謝謝你的努力。 – Maki

+0

@Maki你是不是指'callback'或'listener'?這是擴展性更好的方法!不要混淆,你的問題會幫助其他程序員。謝謝! – kimkevin

+0

問題是爲什麼即使將字符串聲明爲全局變量,您也無法使用onResponse中附加的字符串。同樣,您可以使用onResponse中附加的布爾值。 – Maki

1

只需在OnResponse中放入Toasts條件,即可觸發吐司。