2017-10-18 75 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条件,即可触发吐司。