2011-09-14 63 views
1

我把一個列表視圖的LinearLayout裏面,我想重寫的onkeydown()方法中的ListView ,我不控制對焦,只是改變的onkeydown一些變量(),我想系統做的,如果我的避風港重寫onkeydown方法,我該怎麼辦?返回false?或者返回super.onkeyDown()?這對任何幫助都會很好。先謝謝你。Onkeydown返回false和返回super.onkeydown()之間有什麼區別?

enter image description here

有三個列表視圖,並且A B C是列表視圖的3項。當c被聚焦時,當我按下keybord上的左箭頭時,默認獲得焦點。我想要listview2中的第一項獲得重點,我該怎麼辦?

回答

2

NTC是不完全正確的。 OS不使用反射來獲取您的基類'處理程序。

如果返回false,你明確地告訴你不想處理此事件的操作系統;然後OS調用View的父處理程序(如您的測試所示);這發生在事件得到處理或達到頂部視圖之前。

如果調用super.OnKeyDown()你讓你的基類來處理事件。請注意,它是一個基類'處理程序提供相同的視圖,而不是父視圖;不要在這裏混淆。

因此,使用一種或另一種取決於所需視圖的行爲。

我在你的情況supose你需要return super.onKeyDown();

+1

是的,你是對的,我知道了。在我的情況下,我應該返回super.onkeydown()。但我發現焦點變化總是不喜歡我想要的。 – zyunchen

+0

如果用戶界面不允許你,你可能會想三次,如果這是你想要的。用戶不應該對意外的UI行爲感到困惑。 – port443

+0

默認情況下系統的焦點變化可能會讓用戶感到困惑,我想要的只是調整它正常。我會張貼一張圖片來說明清楚 – zyunchen

0

super.onkeyDown() - 這會讓超類的負擔由您自己的意願處理onKeyDown事件(您明確表示要處理它)。當您返回false時,android會假定您沒有處理onKeyDown事件,並且super.onKeyDown()被默認調用(沒有您調用它)。

+0

全身...也許返回false時,父視圖沒有父類的意願辦理的onkeydown。 – zyunchen

+0

@zyunchen .. parentView是obevouosly將是一個類.. – ngesh

+0

em..I只需創建一個FileListView類,這是擴展listview.And我把它放在一個LinearLayout中。如果onkeydow,逆轉flase.then linearlayout將處理它,如果返回super.onkeydown,listView將處理它?對?它是我的理解,我不知道。 – zyunchen

相關問題