0

我想控制android中的箭头键事件。我正在三星 I5500 手机中测试该应用程序。该应用程序由选项卡组成。我成功地使用侦听器捕获事件。

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    Log.i(TAG_NAME, "key event: " + keyCode);
    if(keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
        Log.i(TAG_NAME, "Directional centre pad pressed");
    }
}

例如,第三个选项卡中的活动包含 3 个项目的列表视图

Item A
Item B
Item C

我使用向右箭头导航到第三个选项卡,然后单击向下箭头以选择上述项目之一。单击 DPAD_CENTER 键会触发附加到 listView 的 ItemClick 侦听器。到目前为止一切都很好。但是,在此之后,当前选项卡焦点移动到主页(选项卡 0)。尝试呈现 UI 的适配器无法加载,因为它位于不同的选项卡中。最终它崩溃了。

有谁之前经历过这个吗?我在互联网上搜索。我没有找到足够值得的东西。

4

1 回答 1

0

如果您正在考虑使用 DPAD 键来查找不同 UI 项的焦点,那么您应该设计 XML 布局以了解要关注哪个视图。请参阅http://developer.android.com/reference/android/view/View.html#FocusHandling

您需要为每个元素指定 nextFocusUp/nextFocusDown/nextFocusRight/nextFocusLeft。

对于 ListViews 和 Tabs,存在一个默认实现,出于同样的原因,您可以向下和向上滚动列表视图。

遵循这些准则将使您的应用程序对 DPAD 事件的响应更加灵敏,并提供无缝的用户交互(使用 AIR 鼠标/dpad 控制器等时)

于 2013-03-18T10:53:51.440 回答