Soft Keyboard shows up on EditText focus ONLY once
Thanks for reading.
I am facing a strange problem: My app behavior is such that when the Activity
starts, I requestFocus()
on an EditText
and show the soft keyboard.
However, when I press the back button to dismiss the keyboard and tap the EditText
I don't get the keyboard to pop up ever again. Only way out is to the start the Activity
again.
Here's what my code looks like:
EditText editText = (EditText) findViewById(R.id.editText);
editText.requestFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if(imm != null) {
imm.toggleSoftInput(0, 0);
imm.showSoftInput(editText, InputMethodManager.SHOW_FORCED);
}
And here's my XML:
<EditText android:id="@+id/editText"
android:layout_width="wrap_content"
android:imeOptions="actionSearch" android:h开发者_开发技巧int="Test Hint"
android:layout_height="wrap_content" android:layout_centerHorizontal="true"
android:maxLength="30">
</EditText>
Any help would be greatly appreciated!
Thanks!
Try to open and hide inside a Runnable
as,
TO OPEN
ettext.requestFocus();
ettext.postDelayed(new Runnable() {
@Override
public void run() {
InputMethodManager keyboard = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
keyboard.showSoftInput(ettext, 0);
}
},200);
TO CLOSE
ettext.requestFocus();
ettext.postDelayed(new Runnable() {
@Override
public void run() {
InputMethodManager keyboard = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
keyboard.hideSoftInputFromWindow(ettext.
getWindowToken(), 0);
}
},200);
You used the wrong view for showing the input window.
EditText editText = (EditText) findViewById(R.id.editText);
editText.requestFocus();
InputMethodManager imm =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
if(imm != null) {
imm.showSoftInput(editText, 0);
}
try this:
final InputMethodManager imm = (InputMethodManager)EnterWordsActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm != null)
{
imm.toggleSoftInput(YOUE_EDTITE_TEXT.SHOW_FORCED,1);
}
None of above work until i clear the forces textField.clearFocus();
before requesting focus, so my final code in onResume
looks like this.
@Override
public void onResume() {
super.onResume();
Log.d(TAG, "onResume: ");
resumed = true;
textField.postDelayed(new Runnable() {
@Override
public void run() {
textField.clearFocus();
textField.requestFocus();
if (!editMode)
textField.getText().clear();
inputMathodType = SharedPref.read(SharedPref.KEY_INPUT_MATHOD_SHARED_PREF, -1);
setInputMethod();
}
}, 200);
}
Used this coding in your Activity,It will hide your keyboard this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
I faced the same problems for days. Solutions provided with creating threads and delays in the code are not efficient. The framework has solution. you can check my short solution here: https://stackoverflow.com/a/74442682/6906562
精彩评论