Android Studio中的错误 - 无法从静态上下文引用非静态方法

时间:2015-01-27 10:05:20

标签: java android android-studio gson retrofit

我在android上创建了一个简单的应用程序,这是一个搜索引擎电影。它使用GSON + Retrofit。

班级FilmApiRequester有错误。

  

Api.getFilmInfo(apikey,filmTitle,pageLimit,callback);

     

非静态方法' getFilmInfo(java.lang.String,java.lang.String,   java.lang.String,retrofit.Callback)'不能   从静态上下文中引用。

我不知道如何解决这个问题。

FilmApiRequester.class

public class FilmApiRequeter {


private static String ROOT ="http://example.com";

RestAdapter restAdapter = new RestAdapter.Builder()
        .setEndpoint(ROOT)
        .build();
Api filmRequester = restAdapter.create(Api.class);

private String apikey="ApiKeyExample";

public void getFilms(String filmTitle,String pageLimit, Callback<Film> callback)
{
    Api.getFilmInfo(apikey,filmTitle,pageLimit,callback);
} }

Api.class

public interface Api{

@GET("/movies.json")
public void getFilmInfo(@Query("apikey") String apikey, @Query("q") String filmTitle, @Query("page_limit") String pageLimit, Callback<Film> callback); }

1 个答案:

答案 0 :(得分:2)

你的问题在这里:

public void getFilms(String filmTitle,String pageLimit, Callback<Film> callback)
{
    Api.getFilmInfo(apikey,filmTitle,pageLimit,callback);  /// this line
}

您已将方法创建为:

public interface Api{

@GET("/movies.json")
public void getFilmInfo

由于您的方法getFilmInfo是非静态的,因此如果没有实例,则无法调用它。因此,要么将其设为static,要么创建实现接口Api的类的实例。