私はUILを使用して、ListFragmentに画像を読み込んで表示しています。ListViewでは、Handler-Patternを使用しています。今のところ問題ありません。
しかし、ListEntryをクリックして2番目のフラグメント内に別の画像を表示すると、失敗します。
奇妙なことに、2番目のフラグメントのボタンをクリックすると、その画像が読み込まれ、チャームのように機能します。
ログ出力は、どちらの場合も、画像がディスクキャッシュにあり、同様にスケーリングされたことを示しています。-エラーはありません。
この関数はフラグメントの一部です:(そして常にスレッド1(UI)から呼び出されます)
public void updateStockInfo(final String symbol) {
if (viewer != null) {
//final ImageView imageview = (ImageView) viewer.findViewById(R.id.stockinfo);
urlForStockInfo = "http://chart.finance.yahoo.com/c/3m/d/" + symbol.toLowerCase();
imageloader.loadImage(getActivity(), urlForStockInfo, new ImageLoadingListener() {
...
@Override
public void onLoadingComplete(final Bitmap loadedImage) {
imageview.setImageBitmap(loadedImage);
logger.debug("Loadinf complete");
}
});
}
onActivityCreated(onCreateViewと同じ)からupdateStockInfoを呼び出すと、例外なく失敗します。画像をロードするためのスレッドが開始されません。LoadAndDisplayImageTas:run()の89行目にThread.interrupted()のチェックがあります-このチェックは失敗します。
手動で(ボタンを押す)Buuuuutttが機能する場合は、updateStockInfoを呼び出しますか?
すべての場合において、updateStockInfoはUIスレッドによって呼び出されます。
ヒントはありますか?事前にthx!
[更新]
ソースをダウンロードし、92行目のThread.interupted()のチェックを削除しました
if (/* Thread.interrupted() || */checkTaskIsNotActual()) return;
if (configuration.loggingEnabled) Log.i(ImageLoader.TAG, String.format(LOG_DISPLAY_IMAGE_IN_IMAGEVIEW, imageLoadingInfo.memoryCacheKey));
あなたは何を知っていますか-それは機能します。これはバグでしたか、それとも私の特別な場合にのみ機能しますか?