0

私のアプリにはメイン アクティビティにスピナーがあり、コンテンツは sqlite から読み込まれます。また、私のアプリは、ユーザーがサーバーから最新のデータをダウンロードするためのダウンロード オプションを提供します。また、非同期ダウンロード タスクは別のクラスにあります。

私の質問は、ダウンロード プロセスが完了したら、メインのアクティビティ スピナーを更新するにはどうすればよいですか?

4

1 に答える 1

1

このようにしてみてください。

1) コールバック インターフェイスを作成する

 public interface DownloadCompleted {
        // Define your Data type to which you want to store data after AsycTask completion
        public void onTaskComplete(String result);
    }

2) 非同期タスク

 public class UploadAsyncTask extends
            AsyncTask<String, Void, String> {
        private ProgressDialog Dialog;
        String response = "";
        Activity _context;
        private DownloadCompleted callback;

        public UploadAsyncTask (Activity _context) {
            this._context = _context;
            this.callback = (DownloadCompleted ) _context;
        }

        @Override
        protected void onPreExecute() {
            Dialog = new ProgressDialog(_context);
            Dialog.setMessage("Loading...");
            Dialog.show();

        }

        @Override
        protected String doInBackground(String... urls) {
            try {
                String url= urls[0];
                //Do your operation
            } catch (Exception e) {
            }
            return response ;

        }

        @Override
        protected void onPostExecute(String result) {
            Dialog.dismiss();
            callback.onTaskComplete(result);

        }

    }

3) 呼び出し元のアクティビティにインターフェイスを実装します

public class YourActivity extends Activity implements DownloadCompleted {   

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        new UploadAsyncTask (this).execute(YOUR URL String);

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.rss_reader, menu);
        return true;
    }

    @Override
    public void onTaskComplete(String result) {
        // Refresh your view here
                // use result data as after completion AsycTask
    }

}

詳細なヘルプとソース コードについては、以下のリンクを参照してください。

http://amitandroid.blogspot.in/2013/02/android-rssfeed-with-async-task-example.html

于 2013-03-18T09:03:52.190 に答える