zoukankan      html  css  js  c++  java
  • EditText的焦点问题

    问题说明:

    activity中有个三级菜单,三个ListView嵌套,最后一层ListView的item中有EditText控件。要求EditText不仅能手动输入,还能点击加减进行改变。EditText改变后各级目录的得分情况要实时改变。

    在EditText获取焦点的时候点击关闭二级目录,或者在EditText数字改变的时候刷新最外层的adapter时会报错--java.lang.IllegalArgumentException: parameter must be a descendant of this view。

    原因分析:

    出现这个bug的前提条件:当listview向下滚动了再返回时会调用HorizontalScrollView的onSizeChanged()方法,在onSizeChanged()方法中调用了findfocus方法得到返回的界面中当前拥有焦点的view。

    解决方法:

    在关闭二级目录或刷新adapter之前把焦点转移,直接落在某一指定的view上,或者在activity中声明一个空view然后Gone掉,让焦点落在空view上。

    让EditText失去焦点、关闭软键盘并刷新adapater的代码参考:

            tv_title.setFocusable(true);
            tv_title.setFocusable(true);
            tv_title.setFocusableInTouchMode(true);
            tv_title.requestFocus();
            tv_title.findFocus();
            InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), 0);
            adapter.notifyDataSetChanged();
    

      

  • 相关阅读:
    day19 反射
    Oracle函数整理
    在博客园设置访问人数
    数据库中行转列
    Oracle中数据库与实例的区别
    sql语句的执行顺序
    【地址】ps_cs6安装
    ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法
    人员管理模块密码过期
    相关性配置模块总结
  • 原文地址:https://www.cnblogs.com/blog4wei/p/9300595.html
Copyright © 2011-2022 走看看