当前位置: 代码迷 >> Android >> 本人初学者,对着个有关问题迷惑很久,求解
  详细解决方案

本人初学者,对着个有关问题迷惑很久,求解

热度:20   发布时间:2016-05-01 10:10:19.0
本人菜鸟,对着个问题迷惑很久,求解







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) {
  相关解决方案