2010-11-15 34 views
1

我有我的應用程序列表。onTrackballEvent不觸發三星瞬間

當用戶觸摸用他們的手指時,onListItemClick處理程序便會啓動一個列表項,我把它打開一個新的活動。

然而,當用戶使用軌跡球/墊點擊,我想執行一些不同的功能。我已經覆蓋了TrackballEvent,並且在模擬器的軌跡球模式下一切都很好。

不幸的是,三星的瞬間進行測試時,點擊觸控板打響onListItemClick處理程序,而不是onTrackballEvent處理程序。

有誰知道爲什麼嗎?有沒有人有辦法解決這個問題?

回答

1

在列表視圖中,你可以setOnKeyListener和你的代碼時的鍵碼是KeyEvent.KEYCODE_DPAD_CENTER

listview.setOnKeyListener(new OnKeyListener() { 

      public boolean onKey(View v, int keyCode, KeyEvent event) { 
       switch(keyCode){ 
       case KeyEvent.KEYCODE_DPAD_CENTER: 
        if(event.getAction()==KeyEvent.ACTION_UP){ //to do it only when key is released 
        // do the code while trackball/pad is clicked 
        } 
        return true; 
       default: 
        return false; 
       } 
       } 
     } 
}); 

它爲我工作。希望這會給你一些想法

+0

這幾乎工作。當我按下墊子時,我的代碼執行。不幸的是,當我釋放按鈕時,我的代碼再次執行。因此,每次點擊軌跡球/鍵盤時,代碼都會執行兩次。 – Andrew 2010-11-23 16:13:03

+0

@Andrew從KeyEvent參數你可以識別keyup和keydown。我編輯了代碼。現在它只執行一次 – 2010-11-24 05:09:23

+0

哈哈,很奇怪。這樣比較好,但有一個新問題。當我這樣做時,上下文菜單被激活! – Andrew 2010-11-24 15:11:21

-1

嘗試重寫dispatchTrackball事件,並抓住這些事件。此外,只是一個建議 - 我不會在軌跡球上使用不同的操作,因爲並非所有Android手機都具有軌跡球。