Onkeydown返回false和返回super.onkeydown()之间的区别是什么?

时间:2011-09-14 03:55:26

标签: android

我在listlayout中放了一个列表视图,我想在ListView中覆盖onkeydown()方法 ,我不控制焦点,只是改变onkeydown()中的一些变量,我希望系统做就好像我没有覆盖onkeydown方法。我该怎么做?返回false?或者返回super.onkeyDown()?对于任何帮助都会非常好。提前谢谢你。

enter image description here

有三个列表视图,而b c是三个列表视图项。当c聚焦时,当我按下键盘上的左箭头时,默认情况下获得焦点。我希望listview2中的第一项获得焦点,我该怎么办?

2 个答案:

答案 0 :(得分:2)

ntc 并不完全正确。操作系统不使用反射来获取基类的处理程序。

如果您返回false,则明确告诉操作系统您不想处理此事件;操作系统调用View的父处理程序(如测试所示);这种情况发生在事件被处理或达到顶视图之前。

如果调用super.OnKeyDown(),则允许基类处理事件。请注意,它是一个基类的处理程序,提供相同的视图,而不是父视图;不要在这里混淆。

因此,使用其中一个取决于您的视图所需的行为。

在你的情况下,你需要return super.onKeyDown();

答案 1 :(得分:0)

super.onkeyDown() - 这会让超类负担按照你自己的意愿来处理onKeyDown事件(你明确地说要处理它)。当你返回false时,android假定你没有处理onKeyDown事件,默认情况下会调用super.onKeyDown()(不用你调用它)。