In my activity, I have a editText field. When the user taps on it, the editText gains the focus and the keyboard appears. Now, when the user presses the hardware back button on the phone, the keyboard disappears but the cursor remains in the Edittext, i. e., it still has the focus. Is it possible to make the EditText lose focus when back button is pressed? I tried using the following code but it didn't work:
@Override
public void onBackPressed() {
vibrator.vibrate(Constants.DEFAULT_VIBRATE_TIME);
myEditText.clearFocus();
super.onBackPressed();
}
You can make another of your
Views
focusable, for example anImageView
. Be sure to make it focusable in touch mode, usingsetFocusableInTouchMode(true)
and ononResume()
make thatView
torequestFocus()
.Also you can create a dummy
View
with 0 dimensions and perform same steps described above.I hope this helps.
This may be a possible solution:
Just extend EditText:
And in the xml just use
<yourPackage.EditTextV2>
instead of<EditText>
.Note: You may need to add/remove constructors to this class depending on the min API you're supporting. I suggest just adding them all and removing the ones whose
super()
calls get underlined in red.Add view like the following higher than your EditText:
Also to hide keyboard add this in onBackPressed():