【问题标题】:Error in Android Studio - Non-static method cannot be referended from static contextAndroid Studio 中的错误 - 无法从静态上下文中引用非静态方法
【发布时间】:2015-03-25 21:44:37
【问题描述】:

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

FilmApiRequester有错误。

Api.getFilmInfo(apikey、filmTitle、pageLimit、回调);

非静态方法'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); }

【问题讨论】:

标签: java android android-studio gson retrofit


【解决方案1】:

你的问题在这里:

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的类的实例。

【讨论】:

  • 我编辑的代码能正常工作吗? public void getFilms(String filmTitle,String pageLimit, Callback&lt;Film&gt; callback) { Api api = new Api() { @Override public void getFilmInfo(@Query("apikey") String apikey, @Query("q") String filmTitle, @Query("page_limit") String pageLimit, Callback&lt;Film&gt; callback) { } }; api.getFilmInfo(apikey,filmTitle,pageLimit,callback); }
  • 只需将 static 关键字添加到您的方法中,例如 public static void getFilmInfo
猜你喜欢
  • 2013-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-22
  • 1970-01-01
相关资源
最近更新 更多