【发布时间】:2018-09-30 23:20:29
【问题描述】:
我是 Java 初学者,我一直坚持从匿名内部类分配变量的返回值。
我想捕获从 API 调用返回的字符串列表。
List<String> **strTopics**=null;
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(url)
.addConverterFactory(GsonConverterFactory.create())
.build();
Call<List<String>> call=retrofit.getSubjects();
call.enqueue(new Callback<List<String>>() {
@Override
public void onResponse(Call<List<String>> call, Response<List<String>> response) {
Log.d("prepareListData","I am success");
strTopics=response.body();
for(String str:strTopics)
Log.d("Subject Name ",str)
}
@Override
public void onFailure(Call<List<String>> call, Throwable t) {
Log.d("prepareListData","I am failure");
}
});
//I am having challenges here. After this statement, again "**strTopics**" is becoming null.
for(String str:strTopics)
Log.d("After inner method",str)
我只是想提一下,如果我评论上面的 for 循环,那么只有我能够打印内部类方法中的主题名称。
如果取消注释,则不会调用任何 for 循环,也不会打印任何内容。在第二个 for 循环中获取 NullPointerException。也不确定是 Retrofit2 的问题。
谁能帮我解决这个问题。无论从内部类返回什么,我都希望在它之外使用这些值。
请帮忙。
【问题讨论】:
-
该代码应该可以将 strTopics 设置为另一个值,您收到的响应是否可能为空? (所以它将 strTopics 分配给 null)
标签: java retrofit2 anonymous-class