Intentのアクティビティ遷移の際のProgressDialog

Androidのアプリを作っているときに考える画面遷移。

この画面遷移の際に少し時間がかかるような場合にProgressDialogを表示しておくとユーザ側としても

ストレスが少なくなるのでは。

ただこのProgressDialog、次のようにしたら表示できますが・・・

ProgressDialog dialog = new ProgressDialog(this);
dialog.setTitle(“タイトル”);
dialog.setMessage(“メッセージ”);
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);//横棒のじゃなくてくるくる回るやつ
progressDialog.setIndeterminate(ture);//結果表示しない (何%おわってます とかの表示をしない)
dialog.setCancelable(true);//Back keyの有効とかの設定

dialog.show();//ダイアログの表示

これをインテントの際に表示しようとするなら
あるボタン(R.id.btn)を押すとActivityが遷移するという設定でいくと・・・

public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\main);

ProgressDialog dialog = new ProgressDialog(this);
dialog.setTitle(“タイトル”);
dialog.setMessage(“メッセージ”);
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);//横棒のじゃなくてくるくる回るやつ
progressDialog.setIndeterminate(ture);//結果表示しない (何%おわってます とかの表示をしない)
dialog.setCancelable(true);//Back keyの有効とかの設定

Button btn = (Button) findViewById(R.id.btn);
btn.setOnClickLitener(new OnClickListener(){

void onClick(View v){
dialog.show();//ダイアログの表示
Intent intent = new Intent(FastActivity.this , SecondActivity.class);
startActivity(intent);
dialog.dismiss();//ダイアログの非表示
}
});

}

とやりたくなるんですけども・・・これだとdialog.show()の後にstartActivityがあるのにProgressDialogが表示されないんです。

そこでThreadを使ったらうまくいったんでそのコードをば。

onClick()からです。

void onClick(View v) {
// ProgressDialogの表示
progressDialog.show();
new Thread(new Runnable(){
public void run(){
Intent intent = new Intent(TopMenu.this, MainActivity.class);
startActivity(intent);
progressDialog.dismiss();
}
}).start();
}

こうするとうまくいったって不思議。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です