Android: окно оповещения через 3000 мс

В моей программе я хочу, чтобы это диалоговое окно предупреждения отображалось через 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) 
   {


   }
   });

person Randroid    schedule 04.07.2011    source источник


Ответы (6)


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

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

   new Thread()
   {
       public void run()
       {
            sleep(3000);
           AlertDialog.Builder successfullyLogin = new Builder(LWM.this);
            successfullyLogin.setCancelable(false);
           successfullyLogin.setMessage("Successfully Login !").show();
           }
   };
person Shashank Degloorkar    schedule 04.07.2011

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

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

person ddewaele    schedule 04.07.2011

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

person Taruni    schedule 04.07.2011
comment
, Хмммм Спасибо, но это не совсем то, что я хочу. Я показываю диалоговое окно прогресса в течение 3000 мс, и после этого я должен показать это диалоговое окно предупреждения (успешно войти в систему!). - person Randroid; 04.07.2011

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

person MByD    schedule 04.07.2011

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

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

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

person Justin Shield    schedule 04.07.2011

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

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

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

person Positronic Network    schedule 04.07.2011