問題描述
將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 表示你已經處理過這個事件了.
