我遇到问题我无法访问mGirlsLisl
变量。
我认为try catch中存在问题。
代码效果很好,但onCreate
方法无法访问mGirlsList
变量。
请检查代码
公共类MainActivity扩展了AppCompatActivity {
private ArrayList<Girl> mGirlsList;
private GirlClient girlClient;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
fetchGirls("girls.json");
Log.i("LOG", String.valueOf(mGirlsList.size())); // ERROR can't get size
}
private void fetchGirls(String query) {
girlClient = new GirlClient();
String url = girlClient.getApiUrl(query);
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url(url).build();
Call call = client.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String jsonData = response.body().string();
try {
mGirlsList = girlClient.getGirlsListFromJson(jsonData);
Log.i("LOG", String.valueOf(mGirlsList.size())); // 5 OK
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
答案 0 :(得分:0)
你没有在任何地方初始化mGirlsList
实例变量,但试图访问OnCreate
方法中的大小。与执行OnResponse
的{{1}}方法中的那个不同。
因此,请确保在mGirlsList = girlClient.getGirlsListFromJson(jsonData);
方法内的某处初始化mGirlsList
。