2012-06-19 43 views
0

事件監聽我設置了事件監聽器,例如:setOnClickListener這樣超時檢測在Android電子

Button stopBtn = (Button)findViewById(R.id.stop); 
    stopBtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      doMagic(); 
     } 
    }); 

我想,如果沒有按下按鈕來設置此監聽超時事件上10秒。使用案例:我有button1激活此stopBtn監聽10秒,如果超時來臨都變得失活,我需要按button1使stopBtn活躍起來。

林可能做錯:

final Handler myHandler = new Handler(); 
    startBtn = (Button)findViewById(R.id.start); 
    myHandler.postDelayed(new Runnable() { 
     public void run() { 
      startBtn.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Log.i(TAG,"runned"); 
       } 
      }); 
     } 
    }, 10000); 

後10秒即時通訊仍然能夠單擊它,那可能是餘弦事件偵聽器仍然連接。即使我不知道它是否被解僱,我如何分離它。

回答

1

一個delayed Runnable張貼在一個處理器能管理的是:

myHandler.postDelayed(new Runnable() { 
public void run() { 
    if(something happened) { 
    // magic work 
    } else { 
    // turn off the event 
    } 
} 
, 10000); 

您可以通過使用此代碼初始化的Handler作爲一個實例變量:

final Handler myHandler = new Handler(); 
+0

謝謝,我仍然有一些問題,更新我的問題。 – rskuja

+0

你可以監聽改變到一個新的(也許一個空或任何你需要的) – Tim

1

延遲動作可以通過使用安排Handler。具體地檢查2種方法:postAtTime(Runnable, long)postDelayed(Runnable, long)

很容易地創建一個Handler,只需使用Activity.onCreate(Bundle state)內的默認構造函數Handler handler = new Handler()。然後將你想要的動作包裹到Runnable並傳遞給處理程序。

+0

哦,而我是這個書面方式'蒂姆Messerschmidt'已經發布幾乎同樣的建議。 :) –

+0

:)還是值得讚揚的! – Tim