2011-07-01 4 views
0

私のアプリにはProgressDialogがあります。実行中ですが、終了後に処理が終了しません。エラーはどこにあるのですか?おかげさまで ProgressDialogの問題?

button.setOnClickListener(new View.OnClickListener() 
    {  
     public void onClick(View v) {    

       progressdialog.show(); 

       new Thread(new Runnable() { 
         public void run() { 
          try {       

           // doing something... 

           progressdialog.dismiss(); 

          } catch (Exception e) { 
           e.printStackTrace(); 
          } 

         } 
        }).start();   
      }     
    }); 
+1

メインスレッド外からUI要素を削除しようとしていますか? – Klaus

+0

私はWebサービスプロセスを行い、スレッドでリストを埋めています。次に、いくつかの要素を表示します。 – realuser

答えて

0

progressdialog.setVisible(false);

JDialogの

+0

ああ、気づかなかった。それはswtですか?私の解決策はスイングのためのものです –

1

のpricessdialog instanseは......

button.setOnClickListener(new View.OnClickListener() 
    {  
     public void onClick(View v) {    

       progressdialog.show(); 

       new Thread(new Runnable() { 
         public void run() { 
          try {       

           // doing something... 

           hm.sendEmptyMessage(0); 

          } catch (Exception e) { 
           e.printStackTrace(); 
          } 

         } 
        }).start();   
      }     
    }); 


    Handler hm = new Handler() 
    { 
     public void handleMessage(Message msg) 
     { 

     progressdialog.dismiss(); 
     } 


    } 

おかげでこれを行う場合。

0

プロセスダイアログは、以下のメソッドを呼び出すことで終了することもできます。

progressdialog.cancel(); 
0

メインスレッドからprogressdialog.dismiss();を呼び出します。

0

プログレスダイアログを表示しながら、バックグラウンドで作業を行う正しい方法は、ProgressDialogを境界にしてAsyncTaskを使用することです。 hereを参照してください。 UIスレッドではないスレッドからUIを変更することはできません。

+0

私は次のプロセスに従っています: ((ListView)findViewById(R.id.listView))。setAdapter(adapter); 次のエラーが表示されます。 android.view.ViewRoot $ CalledFromWrongThreadException:ビュー階層を作成した元のスレッドのみがビューにアクセスできます。 提案がありますか? – realuser

+0

プラットフォームはすでに知っておくべきことを教えてくれました.UI以外のUIからUIを変更します。 AsyncTaskのような特別なクラスを使用するか、Handlersを使用します。 Google彼ら少し。 –

関連する問題