プログレスダイアログに遅延を追加します。
-
25-09-2019 - |
質問
私はダミーの進捗ダイアログが2または3秒間表示されるようにしたいです。これは、実際に言うの検出以外何もしません。私は、コードを持っています:
ProgressDialog dialog = ProgressDialog.show(this, "", "Detecting...",
true);
dialog.show();
dialog.dismiss();
しかし、私はショーの間に入れない、と解雇はダイアログが数秒間表示されるようにするには?ありがとう!
解決
正しい方法 - UIが応答とどまるので、それは、あなたのメインスレッドをブロックしません。
dialog.show();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
dialog.dismiss();
}
}, 3000); // 3000 milliseconds delay
他のヒント
progress.setProgress(100);
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
pdialog.dismiss();
}}, 3000);
また、はるかに効率的、他のソリューションが掲載さと、それはまた、そのCountDownTimer
法により定期的な間隔での の火災ののを支援よりも、あるアンドロイドのonTick()
を使用することができます。
この例を見てください、
new CountDownTimer(3000, 1000) {
public void onTick(long millisUntilFinished) {
// You don't need anything here
}
public void onFinish() {
dialog.dismiss();
}
}.start();
あなたはこのような何かを行うことができます:
new AsyncTask<Void, Void, Void>
{
ProgressDialog dialog = new ProgressDialog(MainActivity.this);
@Override
protected void onPreExecute() {
super.onPreExecute();
dialog.setTitle("Please wait");
dialog.setMessage("Preparing resources...");
dialog.setCancelable(false);
dialog.show();
}
@Override
protected Void doInBackground(Void... params) {
try{
Thread.sleep(3000);
}
catch(Exception e)
{
e.printStackTrace();
}
}
@Override
protected void onPostExecute(Void aVoid)
{
super.onPostExecute(aVoid);
if (dialog!=null && dialog.isShowing())
{
dialog.dismiss();
}
}
}.execute();
何も却下し、あなたに依存する...時間を表示しています間。たとえば、ダイアログでは、サーバーへのアクセスの前に表示され、それが取得閉じます結果手段
dialog.show();
ServerCall();
dialog.close();
あなたは空の遅延手段を必要とする場合は、その..
の間CountDownTimerコールを使用場合Xamarin.Android
を探していくつかのいずれか(のC#を使用しての)溶液(のピーターKnegoの答えのをの)、ここではどのようにされます:
new Handler().PostDelayed(() => {
dialog.dismiss();
}, 1000);
所属していません StackOverflow