【问题标题】:Progress Dialog Box Won't appear - Android进度对话框不会出现 - Android
【发布时间】:2011-06-24 17:00:43
【问题描述】:

我想在我的应用程序中制作一个进度对话框,以便在发送一些信息时使用。但是我写的代码不起作用。它的方法 send() 执行但对话框永远不会出现,因为它很快就消失了

这是我的代码:

    ProgressDialog myProgressDialog = ProgressDialog.show(Tents.this,
                                "Please wait...", "Sending...", true);
    send();
    myProgressDialog.dismiss();
    goFour();

如何使对话框持续时间更长一点?

【问题讨论】:

  • 您确定它不只是显示它然后立即将其关闭,如果您将关闭行注释掉怎么办?
  • 嗯,这很尴尬。你说的对。所以我想我真正的问题是如何让它持续更长时间?
  • yes zaask 按照 shaun 的建议尝试在删除 dismiss() 后检查

标签: android function progressdialog dialog


【解决方案1】:

首先 - 你不应该在与 show() 和 dismiss() 相同的线程中执行 send() - 因为你在发送期间有效地阻塞了 UI 线程。该对话框实际上永远不会显示 - 因为为了在调用 show() 后显示它,您需要将控制权交还给 UI 线程中的主循环器并简单地完成处理您正在处理的任何事件。否则 UI 线程将永远没有机会绘制您的对话框。

最好的办法是在 AsyncTask 中开始运行 send() 并在 onPostExecute() 中调用 dismiss()(请参阅http://developer.android.com/reference/android/os/AsyncTask.html 了解如何运行异步任务)。

【讨论】:

    【解决方案2】:

    您可能会看到一个进度对话框,但它会立即关闭,因为它无需等待。

    在我的示例中,我会假装你想要在 OnCreate 中这样做:

     @Override
     public void onCreate(Bundle savedInstanceState){
         super.onCreate(savedInstanceState);
         setContentView(R.layout.main);
    
         ProgressDialog pd = ProgressDialog.show(this, "Please wait...", "Sending...");
         new Thread(new Runnable(){
             public void run() {
                 send();
                 pd.dismiss();
             }
         }).start();
    
         gofour();
      }
    

    编辑:如果它仍然立即消失,请确保 send(); 执行实际需要一些时间的操作。 ;)

    【讨论】:

      【解决方案3】:

      UI 线程用于启动 send() ,这将不起作用并且不会显示进度对话框。 在另一个线程或 AsynTask doBackground 中调用 send 并在完成时关闭对话框。

      【讨论】:

      • 只要 send() 函数不会导致 onCreate() 方法超时(我认为你得到了 5 秒!)它就可以工作,但这不是一个好习惯!
      【解决方案4】:

      如果您的发送操作完成得太快以至于对话框无法正确显示,我是否建议您通过requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS) 使用活动右上角的不确定进度条,然后使用setProgressBarIndeterminateVisibility(true/false)

      【讨论】:

        【解决方案5】:

        “我想我真正的问题是如何让它持续更长时间?”我的答案是为什么???!!!

        我认为你最好显示一个警告对话框来确认你的发送功能已经完成,这会让用户无缘无故地等待!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-09-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多