无法访问实例变量

时间:2016-04-13 02:53:38

标签: java android okhttp

我遇到问题我无法访问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();
            }

        }
    });
}

1 个答案:

答案 0 :(得分:0)

你没有在任何地方初始化mGirlsList实例变量,但试图访问OnCreate方法中的大小。与执行OnResponse的{​​{1}}方法中的那个不同。

因此,请确保在mGirlsList = girlClient.getGirlsListFromJson(jsonData);方法内的某处初始化mGirlsList