zoukankan      html  css  js  c++  java
  • View手动切换焦点注意事项

    这几天一直在解决一个焦点切换的问题,由于是直接用另外一家公司的代码,没有细看。当应用到测试那边,发现了这个问题,而且真机调试有些问题,不能单步调试,后来是看日志才发现这个问题。

    ViewA包含几个可以获取焦点的几个View:View B, View C, View D,...,

    当View B是默认获取的焦点的View。

    当将View C获取焦点后,当处理完相应的事件后,比如播放视频什么,需要将焦点传给View D,但是运行的时候,发现,当View C处理完相应的事件后,焦点却又回到了View B。而且检查了代码,发现在View C处理完相应的事件后,确实调用了View D的requestFocus() 方法。

    研究了好久,后来将日志开关,打开了,才发现了,在调用View D的requestFocus() 方法之前,焦点就到了ViewB上。

    所以,认真检查了调用View D的requestFocus() 方法附件的代码,发现,在这之前,调用了View C的setVisibility方法将ViewD这个View隐藏掉,所以导致将焦点交给父View即View A来处理焦点事宜,而View A就默认地将焦点交给了View B,这样就出现了测试人员发现的问题。

    所以,正确的做法是:

    在调用View D的requestFocus() 方法之后,才能调用View C的setVisibility(View.INVISIBLE)或setVisibility(View.GONE)方法,避免父控件收回焦点的控制权。

  • 相关阅读:
    TLB原理
    64寄存器位查看器
    araxis Merge
    start_KERNEL
    python 动态支持方案
    https://wenku.baidu.com/view/6142875b804d2b160b4ec06b.html 编译原理课件
    有无符号数的区别
    vim工具的路径
    edraw软件破解密钥已经上传,见文件目录
    https://tieba.baidu.com/p/2248070024
  • 原文地址:https://www.cnblogs.com/mengshu-lbq/p/3325840.html
Copyright © 2011-2022 走看看