я сталкиваюсь с ситуацией, что первый URL на изображение должно быть получить от API Weibo, а затем, я хочу показать изображение, основанное на URL:Android Volley: зерноуборочный JsonObjectRequest & ImageLoader, NullPointerException
залпа Lib используется здесь, и вот мой код:
JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.i("Result", response.toString());
try {
String weiboNickName = response.getString("name");
weiboNameMain.setText(weiboNickName);
weiboUrl = response.getString("avatar_hd");
weiboUrl = weiboUrl.replace("\\", "");
Toast.makeText(MainPage.this, "url: " + weiboUrl, Toast.LENGTH_SHORT).show(); imageLoader = new ImageLoader(queue, new BitmapLruCache(BitmapLruCache.getDefaultLruCacheSize()));
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
queue.add(jsObjRequest);
imageLoader.get(weiboUrl,ImageLoader.getImageListener(weiboAvatarMain,R.drawable.user, R.drawable.user));
Однако, я получаю NullPointerException при использовании в weiboUrl для последнего sentense:
imageLoader.get(weiboUrl,ImageLoader.getImageListener(weiboAvatarMain,R.drawable.user, R.drawable.user));
Я знаю, что это происходит потому, что т hat Volley создаст другой Thread, поэтому я не должен использовать ссылку в основном потоке до окончания Thread in Request.
Есть ли идеи, которые могут быть использованы для преодоления этой проблемы?
Заранее спасибо.
Лучшие
--- Обновлено
Проблема в том, что я ставлю
imageLoader.get(weiboUrl,ImageLoader.getImageListener(weiboAvatarMain,R.drawable.user, R.drawable.user));
в неправильном положении. Если я поместил его в метод jsObject onResponse()
, проблема исчезнет. Затем можно использовать кеш изображения. (ImageRequest
не владеет сам механизм кэш)