onTrackballEvent没有在三星时刻开火

时间:2010-11-15 22:24:45

标签: android listview trackball

我的应用中有一个列表。

当用户用手指触摸列表项时,onListItemClick处理程序将触发,我让它打开一个新的Activity。

但是,当用户使用轨迹球/打击垫单击时,我想执行一些不同的功能。我已经超越了onTrackballEvent,一切都在模拟器的轨迹球模式下完美运行。

不幸的是,在Samsung Moment上进行测试时,单击触控板会触发onListItemClick处理程序,而不是onTrackballEvent处理程序。

有谁知道为什么?有没有人有办法解决这个问题?

2 个答案:

答案 0 :(得分:1)

在listview中你可以setOnKeyListener,当keycode是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;
                 }
              }
         }
});

它对我有用。希望这会给你一些想法

答案 1 :(得分:-1)

尝试覆盖dispatchTrackball事件并抓住这些事件。另外,只是一个建议 - 我不会在轨迹球上使用不同的动作,因为并非所有的Android手机都有轨迹球。