改造返回布尔值

Ulu*_*nov 3 android retrofit retrofit2

如果 saveChanges 函数给我真正的价值,我想运行changesHasBeenSaved。当 Retrofit 完成时,如何获取布尔值、字符串或整数、任何值?是否可以?

我需要一个类似的函数:

public boolean saveChanges()
{
    Boolean output = false;
    RequestAPI requestAPI = Requests.getRetrofit();
    Call<Object> jsonObjectCall = requestAPI.readAllCategoeies();

    jsonObjectCall.enqueue(new Callback<Object>() {
        @Override
        public void onResponse(Call<Object> call, Response<Object> response) {
            if(response.body() != null) {
                output = true;
            }

        }

        @Override
        public void onFailure(Call<Object> call, Throwable t) {
            call.cancel();
        }
    });

    return output;
}
Run Code Online (Sandbox Code Playgroud)

Kri*_*rma 6

您应该将方法返回类型更改booleanvoid异步改造工作。

您应该传递侦听器/回调来获取回调中的状态。

首先创建回调接口如下

public interface ApiCallback {
   void onResponse(boolean success);
}
Run Code Online (Sandbox Code Playgroud)

saveChanges 的样子如下

public void saveChanges(final ApiCallback callback)
{
    RequestAPI requestAPI = Requests.getRetrofit();
    Call<Object> jsonObjectCall = requestAPI.readAllCategoeies();
    jsonObjectCall.enqueue(new Callback<Object>() {
        @Override
        public void onResponse(Call<Object> call, Response<Object> response) {
            callback.onResponse(response.body() != null);
        }

        @Override
        public void onFailure(Call<Object> call, Throwable t) {
            call.cancel();
            callback.onResponse(false);
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

然后你需要调用 saveChanges 方法,如下所示

saveChanges(new ApiCallback () {
   public void onResponse(boolean success){
        if(success){
          // do something
        } else{
          // do something
        }
   }
});
Run Code Online (Sandbox Code Playgroud)