本帖最后由 ol_beta 于 2011-01-16 14:26:21 编辑

解决方案 »

  1.   

    完整代码:public class ProcessBar extends Activity {
    private ProgressBar processBarOne;
    private Button btn;
    private TextView text;
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            processBarOne=(ProgressBar) findViewById(R.id.processBarOne);
            btn=(Button) findViewById(R.id.btn);
            btn.setText("开始!");
            text=(TextView) findViewById(R.id.text);
            btn.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
    new Thread(new Runnable() {

    @Override
    public void run() {
    while(!Thread.interrupted()){
    try {
    TimeUnit.MILLISECONDS.sleep(500);
    } catch (InterruptedException e) {
    }
    int currentProcess=processBarOne.getProgress();
    text.setText("已完成"+currentProcess+"%!");
    if(currentProcess>=processBarOne.getMax()){
    text.setText("恭喜!全部完成!");
    return;
    }
    processBarOne.incrementProgressBy(1);
    }
    }
    }).start();
    }
    });
            
        }
    }
      

  2.   

    线程吧不是这样处理的,我也不是太明白,就是你启动一个线程,发消息,有一个handler接收消息,然后处理,android的线程好像是这样处理的。去网上搜搜例子就知道了。
      

  3.   

    UI更新不能放在非主线程中做,要用handler
    1.run中new一个handler
    2.run中需要更新时调用handler.sendmessage方法发送指定信息
    3.handler的handlemessage方法中根据参数msg来处理指定消息,(比如text.setText)
      

  4.   

    也可以适应activity中的runOnUiThread或view里的post和postDelayed
      

  5.   

     错误已经写的很清楚了
    Only the original thread that created a view hierarchy can touch its views.只有主线程才能更新和显示UI 。
    可以通过其他线程给handler发消息来更新UI