2

1つの問題をどのように解決するべきか疑問に思っています。

アクティビティを開始すると、AsyncTask.

ユーザーがメニューのオプションを選択すると、キャッシュされたデータが使用されます。

データのダウンロード中にオプションを選択するとどうなりますか? UI をブロックせずにデータを待つ最善の方法は何ですか?

edit : メニューを変更したり、オプションを無効にしたりしたくありません。データのダウンロードが完了するのを待っている間にスピナーを表示したい。

ありがとう

4

3 に答える 3

3

onMenuOpened() の項目を無効/有効にします。

@Override
  public boolean onMenuOpened(int feature, Menu menu) {
    if (menu != null) {
      menu.getItem(INDEX_FOR_THE_MENU_ITEM).setEnabled(stuffIsAvailable);
    }
    return super.onMenuOpened(feature, menu);
  }

編集 - 進行状況ダイアログの表示:

ProgressDialog dialog = new ProgressDialog(context);
dialog.setMessage(context.getString(dialogTextResourceId));
dialog.show();

完了したら )を忘れないでくださいdialog.dismiss(

于 2011-05-01T18:28:15.320 に答える
1

メニューオプションが押されたときに呼び出すことができAsyncTask.getStatus()、まだ実行中の場合は ProgressDialog を表示します。

次に、AsyncTask.onPostExeute()アクティビティでデータが利用可能であることを伝え、スピナーを閉じることができます。

于 2011-05-01T18:51:57.787 に答える
0

ダウンロードの開始時にキャンセルできない進行状況ダイアログを実行し、ダウンロードが完了したら閉じます。ProgressDialogクラスを読んでください。

于 2011-05-01T19:00:54.663 に答える