Android中的进度条问题

时间:2011-07-20 04:22:55

标签: android progress-bar

我的应用程序包含下载按钮,每当按下该按钮时,我想要显示一些进度条,以便用户知道发生了什么。我真正想要做的是,每当进度条完成时,我都想要一些Toast弹出。有人可以指导我吗?我会非常感激。提前谢谢!

以下是我正在使用的代码:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        final ProgressDialog dialog = new ProgressDialog(MyActivity.this);
        dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        dialog.setMessage("Downloading...");
        dialog.setCancelable(true);
        dialog.setMax(200);
        dialog.setProgress(0);
        dialog.show();

        Thread t = new Thread(new Runnable(){
            public void run() {
                while(dialog.getProgress() < dialog.getMax())
                {
                    dialog.incrementProgressBy(1);
                    try{Thread.sleep(50);}catch(Exception e){/* no-op */}
                }
                dialog.dismiss();
            }
        });
        t.start();
    }

4 个答案:

答案 0 :(得分:1)

AsyncTask是最简单的,但如果您坚持使用代码,可以在dialog.dismiss()语句之后添加此代码段。

  runOnUiThread(new Runnable(){
        public void run() {
            Toast.makeText(YourClassName.this, "task finished", Toast.LENGTH_LONG).show();  
        }

  }); 

这是因为Toast必须只显示在UI线程上。

答案 1 :(得分:0)

答案 2 :(得分:0)

在dialog.dismiss()之后;写

Toast.makeText(getApplicationContext(),"finish",Toast.LENGTH_LONG).show();

答案 3 :(得分:0)

您无法在UI线程上运行长任务。使用Async Task创建后台线程,但不能在后台线程中进行吐司。

异步任务将在任务完成时通知。

我认为异步任务有以下几种方法。

onBackground onProgressUpdate PreExecute PostExecute(在这里举杯祝酒)