私はプログラミングに慣れているので、これは私にとって大きな学習体験であり、これまで多くの楽しみがあった。AsyncTaskで画像をダウンロードする、ネットワークに接続していない場合は助けが必要
私がやろうとしているのは、アプリに画像を読み込んで、変更して定期的にサーバーにアップロードすることです。今すぐ、適切なイメージがバックグラウンドでダウンロードされるまでプレースメントイメージをロードし、ダウンロードされた新しいイメージを表示します。
私の問題は、ネットワークに接続されていないと、何も表示されないということです。私はPostExecuteで、ネットから画像を読み込めなかった場合にアプリケーションからdrawableを表示することができると仮定しています。私はそれを行う方法がわかりません!
ご協力いただければ幸いです!
編集:代替画像を表示するのに正しい軌道にいるのですか?
import java.io.IOException;
import java.lang.ref.WeakReference;
import java.net.MalformedURLException;
import java.net.URL;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.widget.ImageView;
import android.widget.Toast;
public class ImageDownloader extends AsyncTask<String, Void, Bitmap> {
private String url;
private final WeakReference<ImageView> imageViewReference;
private Resources res;
public ImageDownloader(ImageView imageView) {
imageViewReference = new WeakReference<ImageView>(imageView);
}
@Override
protected Bitmap doInBackground(String... params) {
url = params[0];
try {
return BitmapFactory.decodeStream(new URL(url).openConnection()
.getInputStream());
} catch (MalformedURLException e) {
e.printStackTrace();
return null;
} catch (IOException e) {
return BitmapFactory.decodeResource(res, R.drawable.displayThis);
}
}
@Override
protected void onPostExecute(Bitmap result) {
if (isCancelled()) {
result = null;
}
if (imageViewReference != null) {
ImageView imageView = imageViewReference.get();
if (imageView != null) {
imageView.setImageBitmap(result);
}
}
}
@Override
protected void onPreExecute() {
if (imageViewReference != null) {
ImageView imageView = imageViewReference.get();
if (imageView != null) {
imageView.setImageResource(R.drawable.uboxback);
}
}
}
}
私はあなたがネットワークの問題の場合には、 'IOException'を取得し、そのonPostExecute''に 'null'なのでを渡していると信じて....それがお役に立てば幸いです。ヌルをチェックし、 "エラー"ビットマップを表示することができます。 –