2016-12-23 9 views
-3

私はアンドロイドを学んでいるので、なぜこのコードが機能しないのかわかりません。なぜそれがうまくいかず、正しいコードを私に教えてくれますか?ProgressDialogのテキストを設定するとアプリケーションがクラッシュする

final ProgressDialog dialog = ProgressDialog.show(LoginScreen.this, "", "Loading. Please wait...", true); 
    Thread loggingStatus = new Thread() { 
     public void run() { 
      try 
      { 
       sleep(2000); 
       dialog.setMessage("Logging in. Please wait."); 
       sleep(2000); 
       dialog.dismiss(); 
      } 
      catch (InterruptedException e) 
      { 
       e.printStackTrace(); 
      } 
     } 
    }; 
    loggingStatus.start(); 
+2

は "動作しない" を詳細に説明します。エラー?例外?間違った出力?あなたが理解していない部分も具体的に説明してください。 – csmckelvey

+1

とlogcatの詳細 –

答えて

-1

テキストのProgressDialogをバックグラウンドスレッドに設定しないでください。すべてのUIのupdationはUIスレッド(メインスレッド)に行われる必要があります

どちらのあなたは、メインスレッド上でUIを更新バックグラウンドタスクの一部を移動する必要があり、このロジックや機能

+0

を投稿して、私が知る必要があるものすべてthats – eska97

0

ためAsyncTaskHandlerを使用。このため、コードのシンプルな作品があります:

putting runOnUiThread(new Runnable(){ .. inside run():

final ProgressDialog dialog = ProgressDialog.show(this, "", "Loading. Please wait...", true); 
     Thread loggingStatus = new Thread() { 
      public void run() { 
       runOnUiThread(new Runnable() { 
        @Override 
        public void run() { 
         try { 
          sleep(2000); 
          dialog.setMessage("Logging in. Please wait."); 
          sleep(2000); 
          dialog.dismiss(); 
         } catch (InterruptedException e) { 
          e.printStackTrace(); 
         } 

        } 
       }); 

      } 
     }; 
     loggingStatus.start(); 
関連する問題