android开发中,那些年关于焦点返回的那些事

在Android开发中,当从C页面返回B页面再到A页面时,焦点返回出现问题,直接回到A页面。原因是C到B的返回键DOWN事件已触发B的返回事件。解决方案是通过设置B和C页面的按键监听器,避免B页面在ACTION_UP时触发返回事件,确保正确顺序的焦点返回。
摘要由CSDN通过智能技术生成

不知在开发过程中,有没有遇到以下这么个问题:

前提:这少三级页面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的返回事件:

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值