2017-02-06 4 views
0

Я сделал индикатор выполнения, чтобы работать в течение 5 секунд. Он отлично показывает первый раз. Но второй раз он не останавливается после 5 секунд. Он продолжает работать. код здесьПробег не останавливается

protected Dialog onCreateDialog(int id) { 
    switch (id) { 
     case progress_bar_type: 
      pDialog = new ProgressDialog(this); 
      pDialog.setMessage("Finding Nearest Officer..."); 
      pDialog.setTitle("Please Wait..."); 
      pDialog.setIndeterminate(false); 
      //pDialog.setMax(100); 
      pDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
      pDialog.setCancelable(false); 
      pDialog.show(); 


      Timer timer = new Timer(); 
      timer.schedule(new TimerTask() { 
       @Override 
       public void run() { 
        pDialog.dismiss(); 
        //delayInMillis=5000; 
       } 
      }, 5000); 
      return pDialog; 
     default: 
      return pDialog; 
    } 
} 
+0

после перезапуска приложения он снова работает в первый раз. Но не во второй раз. – suman

+0

вы уверены, что во второй раз ввод «progress_bar_type», если нет, тогда 'default' не будет запускать ни один timertask –

+0

, пожалуйста, опишите – suman

ответ

0

Я предполагаю, что вам нужен другой метод обратного вызова перекрываться

@Override 
protected void onPrepareDialog(int id, Dialog dialog) { 
    // perform scheduling for dismiss here 
    super.onPrepareDialog(id, dialog); 
} 

Другими словами - onCreateDialog() вызывается только первый раз, но onPrepareDialog вызывается каждый раз, когда перед вами собирается показать это, поэтому все ваши расписания лучше настроить внутри onPrepareDialog().

Также важно отметить, что все эти API устарели, и лучше взглянуть на DialogFragment или что-то подобное.

0

Я думаю, что вы делаете объект из этого метода, как это:

Dialog dialog = onCreateDialog(progress_bar_type); 

и вызовите диалоговое окно этой aboject, как это:

dialog.show(); 

, но вместо того, что просьба звонить по телефону только метод, где вы хотите, чтобы чтобы показать. так:

onCreateDialog(progress_bar_type); 

когда вы хотите, чтобы показать диалоговое окно, пожалуйста, только этот метод вызывается непосредственно. вы получите одинаковый выход каждый раз.