package com.example.progressbar02;import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.Button;public class MainActivity extends Activity {

//声明控件的变量
Button  startButton = null;
ProgressBar bar = null;
 
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//根据控件的Id得到控件的对象,并为控件设置监听器 
bar = (ProgressBar)findViewById(R.id.progressBar);
startButton = (Button)findViewById(R.id.startButton);
startButton.setOnClickListener(new ButtonListener());
}
class ButtonListener implements View.OnClickListener {
        public void onClick(View v){
            bar.setVisibility(View.VISIBLE);
         updateBarHandler.post(updateThread);
        }
}

//使用匿名内部类来复写Handler当中的handlerMessage方法
 Handler updateBarHandler = new Handler(){
//(程序运行到这就不运行了)
  public  void handlerMessage (Message msg){
  System.out.println("Try Test");
 bar.setProgress(msg.arg1);
 updateBarHandler.post(updateThread);
 }
 };
//线程类,该类使用匿名内部类方式来进行声明
      Runnable updateThread  = new Runnable() {
int i=0; 
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("Begin Thread");
i = i+10;
//得到一个消息对象,Message类是由Android操作系统提供
Message msg = updateBarHandler.obtainMessage();
//姜msg对象的arg1参数的值设置为i;用arg1和arg2两个成员变量传递消息,优点是系统性能消耗较少
msg.arg1 = i;
try {
//设置当前显示睡眠1秒
Thread.sleep(1000);
}catch( InterruptedException e){
e.getStackTrace(); 
}

//将msg对象加入消息队列中 
updateBarHandler.sendMessage(msg);
if(i==100){
//当i的值为100时,就将线程对象从Handler中移除 
updateBarHandler.removeCallbacks(updateThread);
}
}
}; @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}}Android

解决方案 »

  1.   

    package com.example.fortest2;import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.app.Activity;
    import android.view.Menu;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.ProgressBar;public class MainActivity extends Activity { Button button;
    ProgressBar progressBar;
    int position = 0;
    boolean flags = false;
    Handler myHandler = new Handler(){
    @Override
    public void handleMessage(Message msg) {
    updateProgressBar();
    super.handleMessage(msg);
    }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    init_All_Views();
    } private void init_All_Views() {
    button = (Button)findViewById(R.id.button1);
    progressBar = (ProgressBar)findViewById(R.id.progressBar1);
    progressBar.setMax(100);
    progressBar.setProgress(0);

    button.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View arg0) {
    flags = !flags;
    if(flags){
    myHandler.sendEmptyMessage(0);
    }else{
    myHandler.removeMessages(0);
    }
    }
    });
    } protected void updateProgressBar() {
    Message msg = new Message();
    msg.arg1 = position % 100;
    progressBar.setProgress(position);
    position = (position + 10) % 100;
    myHandler.sendEmptyMessageDelayed(0, 1000);
    } @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
    }}
    猜测你的意思 然后写的结贴
      

  2.   

    http://blog.csdn.net/thinkpadshi/article/details/8184362
    LZ参考一下
      

  3.   

    首先,先谢你了。。不过用你的代码在这个地方Handler myHandler = new Handler()有这样的错误This Handler class should be static or leaks might occur (com.example.fortest2.MainActivity.1)