0

どうすればこれを実現できますか?

Thread t = new Thread(new Runnable() {
    @Override
    public void run() {
        FacebookConnectTask task = 
                new FacebookConnectTask("facebookId", "token", "email", facebookGender,0, 0);
        task.setOnPreExecuteListener(this);
        task.setOnDoneListener(this);
        task.execute();
    }
});
t.start();

public void onPreExecute() { 
    progressbar.setVisibility(View.VISIBLE);
}

public void onDone() { 
    progressbar.setVisibility(View.GONE);
}

新しいスレッドを開いているので、UI 要素を変更することはできません。そのため、タスクの開始時と終了時に UI に対して何かを行うにはどうすればよいですか?

4

2 に答える 2

2

あなたはで仕事をすることができますAyncTask。は、ビューがあるGUIにアクセスできない別のスレッド内でAsyncTaskすべてを実行します。doInBackground()

preExecute()またpostExecute()、この新しいスレッドで重い作業が発生する前後にGUIにアクセスできるようにすることで、長い操作の結果をに渡して、postExecute()処理の結果を表示することもできます。

詳細はこちら:http ://developer.android.com/reference/android/os/AsyncTask.html

ここでの例:http ://www.vogella.com/articles/AndroidPerformance/article.html

于 2012-12-28T15:01:25.370 に答える
1

あなたの活動の中で

private Handler myHandler=new Handler();

完了コールバックの次

public void onDone() { 
myHandler.post(new Runnable(){
   @Override
   public void run() {
      progressbar.setVisibility(View.GONE)
   }
})
}

しかし、すでに述べたように。AsyncTask はそれに対してより適しています

于 2012-12-28T15:09:56.283 に答える