Android进度条不适合我

时间:2013-05-01 18:00:13

标签: android progress-bar android-progressbar

进度条对我不起作用。我试着在Progress中显示一些细节。但我不能,我做错了什么?请帮帮我。

活动文件名 - MainActivity.java

package com.example.sqliteexample;

import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.app.ProgressDialog;
import android.view.Menu;

public class MainActivity extends Activity {
private Handler handler = new Handler();
private ProgressDialog dialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //dialog = ProgressDialog.show(this,getString(R.string.loading) ,getString(R.string.alignMsg));
    dialog = ProgressDialog.show(this,"Loading", "Loading the Image of the Day");
    Thread th = new Thread()
    {
        public void run() {
            handler.post(
                    new Runnable (){
                        @Override
                        public void run() {
                            try {
                                Thread.sleep(10000);
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                            dialog.dismiss();
                        }});
        }};
        th.start();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}

2 个答案:

答案 0 :(得分:0)

使用handler.postDelayed

尝试
dialog = ProgressDialog.show(this,
         "Loading", "Loading the Image of the Day");
handler.postDelayed(runnable,10000);
}
Runnable runnable = new Runnable() {
   @Override
   public void run() {
      /* dismiss  dialog here*/
      dialog.dismiss();

      handler.removeCallbacks(runnable);
   }
};

或者你需要在Thread run方法中移动Thread.sleep(10000);,而不是在传递给Handler.post方法的Runnable中移动:

Thread th = new Thread()
    {
        public void run() {
            /** call Thread.Sleep here... **/
            Thread.sleep(10000);
            handler.post(
            ....your code here....

答案 1 :(得分:0)

handler在主活动中定义,因此它将在UI线程上运行。你要求睡10秒钟,这对UI线程无效。

如果您想显示进度条并在10秒后将其关闭,请使用handler.postDelayed(Runnable r, long delayMillis)

这是代码:

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // dialog = ProgressDialog.show(this,getString(R.string.loading) ,getString(R.string.alignMsg));
    dialog = ProgressDialog.show(this, "Loading", "Loading the Image of the Day");
    handler.postDelayed(new Runnable()
    {
        @Override
        public void run()
        {
            dialog.dismiss();
        }
    }, 10000);
}

希望它有用。