问题描述
将EditText这个View成为了ListView或者RecyclerView的item时,在按输入法的回车/下一步/next时会出现的 focus search returned a view that wasn‘t able to take focus!的报错.
问题原因
因为在按下回车键后,焦点会自动切换到下一个EditText上.这个时候如果你隐藏或者本身未加载下一个EditText.就出现这个报错. 报错的意思就是我的焦点目标丢失了,找不到下一个EditText.
解决办法
第一种:
在EditText属性里设置 android:imeOptions="actionUnspecified" . imeOptions就是控制回车键具体作用的属性
<EditText android:id="@+id/title_content" android:layout_width="0dp" android:layout_height="60dp" android:hint="请输入标题" android:singleLine="true" android:maxLength="20" android:inputType="text" android:imeOptions="actionUnspecified" app:layout_constraintTop_toBottomOf="@id/cover_barrier" app:layout_constraintLeft_toRightOf="@id/title" app:layout_constraintRight_toRightOf="parent"/>
如果actionUnspecified属性设置后依然会报错,你可以尝试另外一个属性actionNone
第二种:
这种办法就是监听编辑器操作,然后将回车操作写成自己需要的功能(将回车键或者其他键值取代成自己想要实现的逻辑).或者直接不写... 这种方式比较简单暴力
mEditView.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { return true; } });
注意需要返回 true 表示你已经处理过这个事件了.
Android开发 EditText按回车按键后出现 focus search returned a view that wasn't able to take focus! 错误