Отключить POSITIVE_BUTTON («Продолжить») на 5 секунд - PullRequest
0 голосов
/ 26 апреля 2011

У меня есть всплывающее окно с предупреждением, которое я показываю при запуске моего приложения.Я хочу, чтобы пользователь прочитал его, поэтому я хочу выделить кнопку «Продолжить» серым цветом в течение 5 секунд, затем включите ее, чтобы пользователь мог продолжить.


 if (alertDialog == null) {
     alertDialog = new AlertDialog.Builder(this).setPositiveButton("Continue",
                    new AlertDialog.OnClickListener() {
                         public void onClick(DialogInterface dialog, int which) {
                             //continue with the app
                         }
                    }).create();
                    alertDialog.setTitle("My Title");
                    alertDialog.setView(myView);
                }
                if ((!alertDialog.isShowing())) {
                    alertDialog.show();
                    alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
                }

После установки кнопки в значение «ложь» яне в состоянии установить его обратно в истину.Я попытался использовать Thread.sleep (5000 л) и создать свой собственный диалог.Ни один из них не работал.Как я могу достичь своей цели?

Спасибо, AkasH

1 Ответ

4 голосов
/ 26 апреля 2011

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

Возможно, вы захотите запустить поток или AsyncTask, где метод doInBackground ведет обратный отсчет (возможно, в цикле, поэтому вы можете показать счетчикв поле ok) и затем в onPostExecute включите кнопку

Псевдокод:

MyAsyncTask extends AsyncTask {
   doInBackground() {
      for (int i = 5; i > 0 ; i ++) {
          publishProgress (i );
          Thread.sleep(1000);
      }
   }

   onProgressUpdate(int i ) {
        okButton.setText(i);
   }

   onPostExecute() {
       okButton.setText("Ok");
       okButton.enable();
   }
}
...