2012-02-08 29 views
0

ProgressDialogを表示しようとしていますが、取得中: Looper.prepare()を呼び出していないスレッド内でハンドラを作成できません。ここでUIスレッドではないProgressDialogを表示します。の仕方?

は私のコードです:

public class SocketThread implements Runnable { 
    BufferedReader in; 
    private ProgressDialog dialog; 

    public void run() 
    { 
     socket = null; 

     while (true) 
     { 
      // Loop until connected to server 
      while (socket == null){ 
       dialog = new ProgressDialog(getApplicationContext()); 
       dialog.setMessage("Connecting to " + gatewayString); 
       dialog.setIndeterminate(true); 
       dialog.setCancelable(true); 
       AdvancedMultipleSeriesGraph.this.runOnUiThread(new Runnable() {  
        public void run() { 
         dialog.show(); 

        } 
       }); 

を修正することが可能ですか?

答えて

4

あなたはアクティビティコンテキストを持っている場合は、Activity.runOnUiThread(Runnable action)

+0

"Activity.runOnUiThread(...)"メソッドがわかりませんでした。今それを知っていることは素晴らしいことです。 – Sly

+0

あなたは歓迎です – Blackbelt

+0

私はあなたを理解していないかもしれませんが、私のコードはあなたが提案したものと同じです: AdvancedMultipleSeriesGraph.this.runOnUiThread(...) –

0

を絶対に使用しないことができ、ハンドラを使用してHandler.post(Runnable)かを使用することができます!は、UIスレッドとは異なるスレッドからUI更新を実行します。

UIスレッドで更新通知を送信できるように、スレッドを作成するときにハンドラに参照を追加することができます。

関連する問題