1
我遇到第一個圖片的網址應該是從微博的API獲取的情況,然後,我想告訴基於URL的圖像:Android的凌空:聯合JsonObjectRequest&ImageLoader的,NullPointerException異常
凌空庫使用在這裏,這裏是我的代碼:
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異常時使用的最後一個sentense weiboUrl:
imageLoader.get(weiboUrl,ImageLoader.getImageListener(weiboAvatarMain,R.drawable.user, R.drawable.user));
我知道這是因爲ŧ帽子Volley將創建另一個線程,所以我不應該在Thread in Request結束之前使用主線程中的引用。
是否有一些想法可以用來解決這個問題?
在此先感謝。
最佳
---更新
的問題是,我把
imageLoader.get(weiboUrl,ImageLoader.getImageListener(weiboAvatarMain,R.drawable.user, R.drawable.user));
在錯誤的位置。如果我把它放在jsObject的onResponse()
方法中,問題就會消失。然後可以使用圖像緩存。 (ImageRequest
沒有自己的緩存機制本身)