【问题标题】:Display loading dialog while running method in Android?在Android中运行方法时显示加载对话框?
【发布时间】:2012-06-14 05:29:24
【问题描述】:

我有一个运行大约需要 3-5 秒的方法设置(因为它在线执行某些操作),我想显示一个加载对话框,但我不知道该怎么做,我尝试启动加载拨号在我调用该方法之前,然后尝试像这样将其关闭:

dialog.show();
myMethod();
dialog.cancel();

但是没有成功,有没有人有什么建议?

【问题讨论】:

    标签: java android dialog loading progress


    【解决方案1】:

    AsyncTask 是我的最爱,但你也可以使用 Handlers :)

    花时间去体验这个美好的blog

    下面的 sn-p 会帮助你。

        package org.sample;
    
        import android.app.Activity;
        import android.app.ProgressDialog;
        import android.os.Bundle;
        import android.os.Handler;
    
        public class Hello extends Activity {
    
            private Handler handler;
            private ProgressDialog dialog;
    
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
    
                dialog = new ProgressDialog(this);
                dialog.setMessage("Please Wait!!");
                dialog.setCancelable(false);
                dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
                dialog.show();
    
                new Thread() {
                    public void run() {
                        // Do operation here.
                        // ...
                        // ...
                        // and then mark handler to notify to main thread 
                        // to  remove  progressbar
                        //
                        // handler.sendEmptyMessage(0);
                        //
                        // Or if you want to access UI elements here then
                        //
                        // runOnUiThread(new Runnable() {
                        //
                        //     public void run() {
                        //         Now here you can interact 
                        //         with ui elemements.
                        //
                        //     }
                        // });
                    }
                }.start();
    
                handler = new Handler() {
                    public void handleMessage(android.os.Message msg) {
                        dialog.dismiss();
                    };
                };
            }
        }
    

    【讨论】:

    • 我之前尝试过使用它,但我不断收到“只有创建视图层次结构的原始线程才能触及它的视图”。错误。而且我不知道这意味着什么……哈哈……有什么建议吗?
    • 您正在尝试从线程访问 UI 元素。这就是您收到此错误的原因。
    • 非常感谢!它现在工作完美:) 我最终使用 run() 就像你之前使用它来执行我的方法一样,但随后使用 runOnUiThread 来更改需要更改的视图! :D
    【解决方案2】:

    在 UI 线程上运行持续时间较长的任务是“不可以”。使用AsyncTask 在后台运行长时间的任务并在完成时更新 UI。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-18
      • 1970-01-01
      相关资源
      最近更新 更多