2012-12-16 36 views
0

我正在製作應用程序並使用處理程序。在A級,顯示一些按鈕與文字,然後用android:停止處理程序

handler.postDelayed(new Runnable(){@Override public void run() {blankbutton();}}, 10000); 

,使得通過10秒的文字上的按鈕時,會被刪除。然而,如果用戶此時按下重置按鈕(在另一個班級中),例如,在處理器計算時間後3秒之後,將會發生的是在按下重置按鈕上的文本7秒之後會發生什麼被刪除:處理程序不會停止。

我怎樣才能停止在另一個類(在重置類)的處理程序?我也查了一些類似的問題和答案這是

handler.removeCallbacks(Runnable); 

然而,復位類下它說:「Runnable cannot be resolved to a variable

非常感謝!

回答

2

你的問題是你正在創建一個匿名的內部Runnable對象。當您嘗試刪除回調時,您將無法參考它。像這樣的東西會使其工作:

Runnable txtClearRun = new Runnable(){ 
    public void run() { 
    blankbutton(); 
    } 
}; 
handler.postDelayed(txtClearRun, 10* 1000); 
. 
. 
. 
handler.removeCallbacks(txtClearRun); 

不同的是,這種方式要分配的Runnable對象給一個變量txtClearRun,讓你有一種方法供日後參考它,當你想將它傳遞到removeCallbacks();

+0

非常感謝您的及時幫助!有用!! – pearmak