-2
我試圖在再次單擊按鈕時手動停止線程處理程序。我無法在任何地方得到解決方案,請幫助。當按鈕再次被點擊時如何停止處理程序?
@Override
public void onClick(View v) {
switch (v.getId())
{
case R.id.black:
changecolor();
Handler h = new Handler();
h.postDelayed(new Runnable() {
@Override
public void run() {
black.setBackgroundResource(R.color.black);
}
}, 2000);
// h.removeCallbacksAndMessages(null);
/*I want to stop the handler here. please help.*/
black.setBackgroundResource(R.color.white);
break;
case R.id.blue:
changecolor();
Handler h1 = new Handler();
h1.postDelayed(new Runnable() {
@Override
public void run() {
blue.setBackgroundResource(R.color.blue);
}
}, 2000);
blue.setBackgroundResource(R.color.white);
break;
case R.id.green:
changecolor();
Handler h2 = new Handler();
h2.postDelayed(new Runnable() {
@Override
public void run() {
green.setBackgroundResource(R.color.green);
}
}, 2000);
green.setBackgroundResource(R.color.white);
break;
case R.id.red:
changecolor();
Handler h3 = new Handler();
h3.postDelayed(new Runnable() {
@Override
public void run() {
red.setBackgroundResource(R.color.red);
}
}, 2000);
red.setBackgroundResource(R.color.white);
break;
}
}
使用handler.removeCallback() –
使用handler.removeCallbacks(可運行); – Rajasekhar
use handler.removeCallbacks(null) – Denny