读书人

android一个小疑点

发布时间: 2012-08-11 20:50:31 作者: rapoo

android一个小问题
package com.android;
为什么点击StopBu不能里那个updateBarhandler.removeCallbacks(updateThread);停止ProgressBar不起作用,而if语句里却能起作用,一直很纠结,谁能帮我看看import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ProgressBar;


public class HandlerBarActivity extends Activity {

private ProgressBar myProgressBar = null;
private Button startBu = null;
private Button stopBu = null;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

myProgressBar = (ProgressBar)findViewById(R.id.myProgressBar);

startBu = (Button)findViewById(R.id.startBu);
stopBu = (Button)findViewById(R.id.stopBu);

stopBu.setOnClickListener(new OnClickListener() {//

@Override
public void onClick(View v) {

System.out.println("stop");
updateBarhandler.removeCallbacks(updateThread);/////////这个函数不其作用


}
});


startBu.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {

System.out.println("start");
myProgressBar.setVisibility(View.VISIBLE);
updateBarhandler.post(updateThread);


}
});
}

Handler updateBarhandler = new Handler(){

@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
myProgressBar.setProgress(msg.arg1);
updateBarhandler.post(updateThread);

}

};


Runnable updateThread = new Runnable() {

int i = 0;
@Override
public void run() {

i = i + 10;
Message msg = updateBarhandler.obtainMessage();
msg.arg1 = i;

try {

Thread.sleep(1000);
System.out.println("run");
} catch (Exception e) {

e.printStackTrace();
}

updateBarhandler.sendMessage(msg);
if(i == 20){
System.out.println("stopThread");
updateBarhandler.removeCallbacks(updateThread);//这个函数却能起作用
}

}
};
}

[解决办法]
要不把工程删掉重新弄一边

读书人网 >Android

热点推荐