【问题标题】:Android: alert box after 3000 msAndroid:3000 毫秒后的警报框
【发布时间】:2011-07-04 05:54:26
【问题描述】:

在我的程序中,我希望此警报对话框在 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) 
   {


   }
   });

【问题讨论】:

    标签: android android-alertdialog


    【解决方案1】:

    我认为您调用的等待函数应该专门用于多线程......

    试试这个...

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

    【讨论】:

      【解决方案2】:

      wait 方法是 java.lang.Object 的一部分,它会导致调用线程等待,直到另一个线程调用此对象的 notify() 或 notifyAll() 方法或直到指定的超时到期。它不用于实现类似“睡眠”的功能。

      您可以启动一个AsyncTask(这将启动一个后台线程)。在 doBackGround 中,您可以让线程休眠 3 秒(不阻塞 UI),然后在 doPostExecute 中弹出对话框。

      【讨论】:

        【解决方案3】:

        为什么不显示一个警告框,而不是显示一个成功消息作为敬酒 3 秒.... 否则,如果您想显示警报框 3 秒,请先删除确定按钮,然后使用处理程序关闭警报框...

        【讨论】:

        • ,嗯,谢谢,但这不是我想要的。我正在显示一个 3000 毫秒的进度对话框,之后我应该显示这个警报对话框(成功登录!)。
        【解决方案4】:

        您可以使用AsyncTaskTimer 来完成此操作。如果您使用AsyncTask,则在后台休眠并在onPostExecute中显示对话框

        【讨论】:

          【解决方案5】:

          这里接受的答案应该会给您一个良好的开端。只需将 toast 替换为对话即可。

          How to display toast inside timer?

          即使用计时器创建一个新线程来倒计时 3 秒,并使用处理程序在主 UI 线程上显示对话框或 toast 消息。

          【讨论】:

            【解决方案6】:

            在 Activity 的类中创建一个Handler(可以分配局部变量)。然后将其设置为在OnStart() 中发送sendEmptyMessageDelayed()。然后,在您的处理程序中,创建alert dialog
            请注意,由于 Android 可以随时终止 Activity,因此您还需要在 Activity 中覆盖 OnStop(),并在处理程序上调用 removeMessages()

            如果您不这样做,消息将留在队列中,但您的 Activitiy 将在事件触发时终止。结果是一个相当混乱的Exception

            这种方法还有一个好处是能够从一开始就终止消息的触发。例如,如果您在此之前完成了需要做的任何事情,您可以简单地删除message from the queue,它不会触发。

            【讨论】:

              猜你喜欢
              • 2011-06-21
              • 2021-12-31
              • 1970-01-01
              • 2013-07-28
              • 2016-06-03
              • 1970-01-01
              • 2017-01-20
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多