2016-04-28 15 views
-1

私の問題は進捗していますスプラッシュ画面ではダイアログが表示されません。誰でもこれを解決できます。問題点スプラッシュ画面でprogressDialog

public class Splash extends Activity 
{ 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.splash_layout); 

    Thread thread = new Thread(){ 
     @Override 
     public void run() { 
      try 
      { 
       sleep(3*1000); 
       ProgressDialog progressDialog = new ProgressDialog(Splash.this); 
       progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
       progressDialog.setMessage("wait"); 
       progressDialog.setCancelable(false); 
       progressDialog.show(); 
      }catch (Exception e) 
      { 
        e.printStackTrace(); 
      }finally { 
       Intent i = new Intent(Splash.this,MainActivity.class); 
       startActivity(i); 
       finish(); 
      } 
     } 
    };thread.start(); 

} 

}

答えて

1
public class Splash extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.splash_layout); 

ProgressDialog progressDialog = new ProgressDialog(Splash.this); 
       progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
       progressDialog.setMessage("wait"); 
       progressDialog.setCancelable(false); 
       progressDialog.show(); 

    Thread thread = new Thread(){ 
     @Override 
     public void run() { 
      try 
      { 
       sleep(3*1000); 

      }catch (Exception e) 
      { 
        e.printStackTrace(); 
      }finally { 
progressDialog.dismiss(); 
       Intent i = new Intent(Splash.this,MainActivity.class); 
       startActivity(i); 
       finish(); 
      } 
     } 
    };thread.start(); 

} 

} 
+0

実際に私は何のdilaogボックスが唯一のスピナーは、そのスピンナーではありません回転スタイルをスピナーたいが、それは継続的にそれをprogressdialog示す方法@Nirav – AnilkumarJohn

+0

使用preogressbarライブラリ –

0

あなたがバックグラウンドスレッドでUIを更新しているCuzの.. が

runOnUiThread(new Runnable.......)

またはUIスレッド上でUIの仕事を入れてみてくださいを使用してみてください。

0

スレッド内に何も書き込むことは、バックグラウンドで実行されます。 は、背景のUI要素を操作できません。。このコードからエラーが発生するはずです。スタックトレースを確認してください。 ProgressDialogのコードをスレッドから削除してスレッドの前に配置することをお勧めします。

0

UIスレッドから進行状況ダイアログを表示する必要があります。または、runOnUiThread(...)メソッドを使用できます。私はあなたの活動に睡眠の代わりにハンドラを使用することをお勧めし

Handler mainHandler = new Handler(Looper.getMainLooper()); 
mainHandler.post(new Runnable() { 
    @Override 
    public void run() { 
     //add try catch 
     sleep(3*1000); 
     ProgressDialog progressDialog = new ProgressDialog(Splash.this); 
     progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
     progressDialog.setMessage("wait"); 
     progressDialog.setCancelable(false); 
     progressDialog.show(); 
    } 
}); 

:あなたは別のスレッドからそれを示さなければならない場合は、スレッドの薄い内側のrunメソッドを記述します。あなたもあなたのコード内のスレッドせずにこれを試すことができます。

Handler h = new Handler(Looper.getMainLooper()) 
h.postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       ProgressDialog progressDialog = new ProgressDialog(Splash.this); 
       progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
       progressDialog.setMessage("wait"); 
       progressDialog.setCancelable(false); 
       progressDialog.show(); 
      } 
     }, 
     (3*1000)); 
+0

、その後登場しdoesntの私がハンドラ@drulabsを使用しているときmainactivityに行く – AnilkumarJohn

+0

あなたのアプリで必要なときは、startActivityコードとdialog.dismiss()を追加する必要があります。 – drulabs

+0

ハンドラの例でわかるように、進行状況ダイアログのshow()だけが表示されます。あなたの要件に応じて却下を含める必要があります。 – drulabs

関連する問題