【问题标题】:How can I return class in callback Retrofit Android如何在回调 Retrofit Android 中返回类
【发布时间】:2020-07-31 05:24:44
【问题描述】:

我想在回调函数中返回UserResponse,但不知道该怎么做。

 private void getUser(String api_token){


      Call<UserResponse> call =  APIService.getUserByToken(api_token);

            call.enqueue(new Callback<UserResponse>() {
            @Override
            public void onResponse(Call<UserResponse> call, Response<UserResponse> response) {
              //   userResponse = response.body();
                if(response.isSuccessful()) {

                    Log.d("GET API TOKEN USER MAIN", String.valueOf(response.body().getUser().getId()));
// RETURN Here UserResponse
                }
            }
            @Override
            public void onFailure(Call<UserResponse> call, Throwable t) {
                Log.d("Falloooooo", t.getMessage());
            }
        });


    }

【问题讨论】:

  • 出现什么错误?
  • 没有错误,但我想尝试返回 userResponse 的方法...而且我不知道该怎么做。
  • 你想改变哪个方法的返回类型?

标签: android retrofit asynccallback


【解决方案1】:

我希望明白你想要什么

 public void getUser(String api_token) {
        CheckInternetConnection connectionCheck = new CheckInternetConnection(getContext());

        if (connectionCheck.haveNetworkConnection()) {
            ApiInterface apiService =
                    ApiClient.getClient().create(ApiInterface.class);

         Call<UserResponse> call = apiService.getUserByToken(api_token);;

            call.enqueue(new Callback<UserResponse>() {
                @Override
                public void onResponse(Call<UserResponse > call, Response<UserResponse > response) {

                    if (response.isSuccessful()) {

                      userName.setText(response.body().getName());

                    }
                }

                @Override
                public void onFailure(Call<UserResponse > call, Throwable t) {
                    Log.d("sucess", String.valueOf(t));

                }
            });
        } else {
            Toasty.info(getContext(), (getResources().getString(R.string.check_connection)), Toast.LENGTH_LONG).show();
        }
    }

和接口类

public interface ApiInterface {
 @GET("nameofapi")
    Call<UserResponse> getUserByToken(@Header("Access-Token") String access_token);
}

【讨论】:

  • 我看不懂你的代码,为什么我需要CheckInternetConnection ?该方法有效,我只想将此方法转换为返回UserResponse。我想在onCreated 中得到类似的东西:``` UserResponse user = getUser(String api_token). For that I need return this class UserResponse```。
  • CheckInternetConnection 检查用户是否打开互联网
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-15
  • 2014-03-19
  • 1970-01-01
  • 1970-01-01
  • 2019-11-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多