グローバル定義では、次のように宣言しました。private HashMap<String, Bitmap> map = new HashMap<String, Bitmap>();
コードの他の部分では、サーバーに接続して必要な情報を取得します。そのうちの 2 つは、イメージ アドレス (url) とイメージ ID です。その後、画像をダウンロードし、独自の ID を割り当てたいと考えています。これは私のコードです:
private LinkedList<Bitmap> getFlagImages() {
InputStream is= null;
LinkedList<Bitmap> llBitmap = new LinkedList<Bitmap>();
for(int i = 0; i < flag.getTeamLogo44x44().size(); i++) {
String urlstr = flag.getTeamLogo44x44().get(i);
try {
HttpGet httpRequest = new HttpGet(urlstr);
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = (HttpResponse) httpclient.execute(httpRequest);
HttpEntity entity = response.getEntity();
BufferedHttpEntity bufHttpEntity = new BufferedHttpEntity(entity);
is = bufHttpEntity.getContent();
Bitmap bm = BitmapFactory.decodeStream(is);
llBitmap.add(bm);
map.put(flag.getTeamId().get(i), bm); // *Crash happens here
}catch ( MalformedURLException e ){
Log.d( "RemoteImageHandler", "Invalid URL passed" + urlstr );
}catch ( IOException e ){
Log.d( "RemoteImageHandler", "fetchImage IO exception: " + e );
}finally{
if(is != null) {
try{
is.close();
} catch(IOException e) {}
}
}
}
return llBitmap;
}
実行すると、アプリケーションがクラッシュし、logcat に Null Pointer Exception が表示され、行が示されますmap.put(flag.getTeamId().get(i), bm);
任意の提案をいただければ幸いです。
// Update、また使用map.put(flag.getTeamId().get(i), Bitmap.createBitmap(bm));
しましたが、結果は同じでした。