Android: окно оповещения через 3000 мс - PullRequest
0 голосов
/ 04 июля 2011

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

Помощь всегда ценится ...!

     AlertDialog.Builder successfullyLogin = new Builder(Register.this);
   successfullyLogin.setCancelable(false);
  successfullyLogin.setMessage("Successfully Login !");
//  successfullyLogin.wait(3000);// this line is nt working
  successfullyLogin.setPositiveButton("Ok",new DialogInterface.OnClickListener() 
  {
   public void onClick(DialogInterface dialog,int which) 
   {


   }
   });

Ответы [ 6 ]

2 голосов
/ 04 июля 2011

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

попробуйте это ...

   new Thread()
   {
       public void run()
       {
            sleep(3000);
           AlertDialog.Builder successfullyLogin = new Builder(LWM.this);
            successfullyLogin.setCancelable(false);
           successfullyLogin.setMessage("Successfully Login !").show();
           }
   };
2 голосов
/ 04 июля 2011

Метод wait является частью java.lang.Object и заставляет вызывающий поток ждать, пока другой поток не вызовет метод notify () или notifyAll () для этого объекта или пока не истечет указанное время ожидания. Он не используется для реализации функции сна "*".

Вы можете запустить AsyncTask (который запустит фоновый поток). В doBackGround вы можете приостановить поток на 3 секунды (не блокируя пользовательский интерфейс), а в doPostExecute вы можете открыть диалоговое окно.

1 голос
/ 04 июля 2011

Создайте Handler в классе вашей Деятельности (может быть назначена локальная переменная).Затем настройте его, чтобы отправить sendEmptyMessageDelayed() в OnStart().Затем в вашем обработчике создайте alert dialog.
Обратите внимание, что , поскольку Android может в любой момент прекратить действие, вам также необходимо переопределить OnStop() в своей активности и вызвать removeMessages() в своем обработчике.

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

. Этот подход также имеет преимущество, заключающееся в том, что он в первую очередь может прекратить отправку сообщения.Например, если вы закончите делать то, что нужно сделать до этого, вы можете просто удалить message from the queue, и он не сработает.

1 голос
/ 04 июля 2011

Принятый ответ должен дать вам хороший старт.Просто замените тост на диалог, и все готово.

Как отобразить тост в таймере?

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

1 голос
/ 04 июля 2011

Вы можете использовать AsyncTask или Таймер для этого. Если вы используете AsyncTask , спите в фоновом режиме и покажите диалог в onPostExecute

1 голос
/ 04 июля 2011

Вместо того, чтобы показывать окно с предупреждением, почему вы не поместите сообщение успеха в качестве тоста на 3 секунды ... или, если вы хотите, чтобы окно оповещения отображалось в течение 3 секунд, сначала удалите кнопку «ОК», а затем используйте обработчики, чтобы закрыть окно оповещения ...

...