首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >改造:无法创建适配器

改造:无法创建适配器
EN

Stack Overflow用户
提问于 2016-02-21 08:52:51
回答 1查看 185关注 0票数 0

我正在对HTTP调用进行改造。但是app抛出以下异常:

02-21 14:07:40.527 21157-21157/com.PoparfilesE/AndroidRuntime:致命异常:主要进程: com.popularmovies,PID: 21157 java.lang.IllegalArgumentException:无法为com.entity.PopularMovies类为方法MovieDbAPI.getPopularMovies创建调用适配器在retrofit.MethodHandler.createCallAdapter(MethodHandler.java:47)的retrofit.Utils.methodError(Utils.java:177)在retrofit.MethodHandler.create(MethodHandler.java:26) at retrofit.Retrofit.loadMethodHandler(Retrofit.java:151)修改$1.调用(Retrofit.java:132)在$Proxy1.getPopularMovies(原生方法)在com.service.MovieServiceImpl.getPopularMovies(MovieServiceImpl.java:27) at com.popularmovies.MainActivityFragment.getPopularMovies(MainActivityFragment.java:49)在com.popularmovies.MainActivityFragment.onClick(MainActivityFragment.java:77) at android.view.View.performClick(View.java:4444)在android.view.View$PerformClick.run(View.java:18457) at android.os.Handler.handleCallback(Handler.java:733)在android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:136)在android.app.ActivityThread.main(ActivityThread.java:5113) at java.lang.reflect.Method.invokeNative(原生方法)在java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609) at dalvik.system.NativeStart.main(原生方法)原因: java.lang.IllegalArgumentException:无法找到类com.entity.PopularMovies的调用适配器。尝试:* retrofit.Retrofit.nextCallAdapter(Retrofit.java:207)的retrofit.ExecutorCallAdapterFactory在retrofit.Retrofit.callAdapter(Retrofit.java:175) at retrofit.MethodHandler.createCallAdapter(MethodHandler.java:45).再来18个

代码语言:javascript
复制
public class MovieServiceImpl implements MovieService{

private static String baseURL =  "http://api.themoviedb.org/3/discover/movie/";

private static String sortBy = "popularity.desc";
private static String key ="*****";

@Override
public PopularMovies  getPopularMovies(){

  Retrofit retrofit = Util.getRetrofit(baseURL);

  MovieDbAPI movieAPI = retrofit.create(MovieDbAPI.class);

  PopularMovies popularMovies =  movieAPI.getPopularMovies( sortBy, key );

  return popularMovies;
}
}

public class Util {


public static Retrofit getRetrofit(String baseURL){

    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(baseURL)
            .addConverterFactory(GsonConverterFactory.create())
            .build();


    return retrofit;
}


}



 public interface MovieDbAPI {

 @GET
 PopularMovies getPopularMovies(@Query("sort_by") String sort_by,   @Query("api_key") String key);

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-21 09:10:31

试试这个:

代码语言:javascript
复制
@GET
Call<PopularMovies> getPopularMovies(@Query("sort_by") String sort_by, @Query("api_key") String key);

当您调用getPopularMovies方法时,请这样做:

同步请求

代码语言:javascript
复制
Call<PopularMovies> call = movieAPI.getPopularMovies(sortBy, key);
PopularMovies popularMovies = call.execute();

异步请求

代码语言:javascript
复制
Call<PopularMovies> call = movieAPI.getPopularMovies(sortBy, key);
call.enqueue(new Callback<PopularMovies>() {
        @Override
        public void onResponse(Response<PopularMovies> response) {

        }

        @Override
        public void onFailure(Throwable t) {
        }
    });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35534137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档