不知在开发过程中,有没有遇到以下这么个问题:
前提:这少三级页面A,B,C
点击A页面中的按钮(A_btn)事件,焦点转移到B页面上的某个控件(B_btn)上,然后在点B页面上(B_btn)按钮,跳转到C页面控件(C_btn)上,此时,你希望监听C_btn的返回键事件,并让他先返回到B_btn,然后在监听B_btn的返回事件,按返回键回到A_btn。
问题:
可是实现是可悲的,经过编写,发现在C_btn上监听返回键,按返回键时焦点一下子就回到了A_btn上。
细节:
其实在按返回键的时候,焦点从C_btn上回到A_btn上时,中间经过B_btn了;
原因:
经过Log打印测试,发现,在C_btn跳到B_btn上时,在KEYCODE_BACK时按下键(DOWN)就已经回到B_btn,但是在松开键,即(UP)时却触发了B_btn的返回事件,从而导致刚才情况的出现。
现象发生原因:
这个我也不太清楚,烦请看见的大神,若有知道的,万请告知,九易阳万分感谢。
解决:
当然,这个问题,经过思考,解决了,而且,办法还很多,现就将我认为最可靠的一种办法,拿出来,和大家讨论讨论。
首先,注册B_btn 的返回事件:
B_btn.setOnKeyListener(new KeyListenerBtn());
然后注册C_btn的返回事件: