当前位置: 移动技术网 > IT编程>移动开发>Android > EditText的焦点问题

EditText的焦点问题

2018年07月13日  | 移动技术网IT编程  | 我要评论

伟哥官网wyhzs,木鱼石茶具价格,黄金大劫案怎么样

问题说明:

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();

  

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网