2

サーバーへのすべての API 呼び出しを ( 経由でAsyncTask)管理するクラスを開発しました。doInBackground()onPostExecute()onPostExecute()

このようにして、通信クラスをジェネリックに保つことができ、Activity はそれにコールバックを送信して UI をアクティブ化および更新します。

どうすればそれを行うことができますか?

ありがとう!

4

2 に答える 2

3

答えは受け入れられますが、別の実際の匿名実装を追加するだけです。これが他の人に役立つことを願っています。

あなたのインターフェース:これを AsyncTask クラス内に実装できます。

public interface ImageLoaderListener{
    void imageDownloaderCallBack(Bitmap bmp);
}

AsyncTask クラスのコンストラクター:

// declare interface variable
private ImageLoaderListener listener;
private String link;

public ImageDownloader(String link, ImageLoaderListener listener){
    this.link = link;
    this.listener = listener;
}

onPostExecution :

@Override
protected void onPostExecute(Void result){
    listener.imageDownloaderCallBack(bitmap);
    // your code, i was returning bitmap
}

Activity クラスでの実装:

ImageDownloader imageDownloader = new ImageDownloader(url, new ImageLoaderListener(){
     @Override
     public void imageDownloaderCallBack(Bitmap bmp) {
            // update Ui elements
     }
});
imageDownloader.execute();

また、戻り値に基づいて Ui 要素を更新する必要がある場合imageDownloaderCallBackは、関数自体の中にそのコードを記述する必要があることに注意してください。

于 2013-11-25T16:21:24.123 に答える