1

好みのアクティビティがあり、そのアイテムの1つをクリックすると、バックグラウンド作業が開始され、バックグラウンドタスクが終了するまでフォアグラウンドに素敵なプログレスバーが表示されるようにしたいと思います。どうやってするの???

書かれたコード:

 public boolean onPreferenceClick(Preference preference) {
  showProgressDialog();
  new Thread(new Runnable() {
   public void run() {
    doSomething();
    hideProgressDialog();
   }       //Runnable.run()
  }).start();
  return false;
 }
});

しかし、上記のコードは進行状況ダイアログを表示していません。ANRエラーが発生します。

ありがとう。

4

2 に答える 2

1

私はまだ進行状況ダイアログを実装していません(今日の後半に計画しています)が、このは良い例のように見えます。自分で使うつもりです。私はそれがあなたのコードがしない多くのことをすることに注意します。

于 2011-05-18T14:11:26.667 に答える
1

アクティビティクラスに次のコードを追加します。

// Need handler for callbacks to UI Threads
    // For background operations
    final Handler mHandler = new Handler();

    // Create Runnable for posting results
    final Runnable mUpdateDone = new Runnable() {
        public void run() {
            progDialog.hide();      
            // Do your task here what you want after the background task is finished.           
        }
    };

onPreferenceClickに次のコードを記述します。

progDialog = ProgressDialog.show(AddPhoto.this, "", "Uploading Photo...");
            new Thread() {
                public void run() {
                    // Start your task here.....                                                        
                    mHandler.post(mUpdateDone);
                }
                }.start();

うまくいかない場合はお知らせください。

于 2011-05-18T14:08:45.020 に答える