読んでくれてありがとう。
私は奇妙な問題に直面しています。私のアプリの動作は、Activity
が起動すると、EditText
でrequestFocus()
を実行してソフトキーボードを表示するというものです。
ただし、戻るボタンを押してキーボードを閉じ、EditText
をタップすると、キーボードが二度とポップアップしなくなります。唯一の方法は、Activity
を再開することです。
私のコードは次のようになります。
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);
}
そして、これが私のXMLです。
<EditText Android:id="@+id/editText"
Android:layout_width="wrap_content"
Android:imeOptions="actionSearch" Android:hint="Test Hint"
Android:layout_height="wrap_content" Android:layout_centerHorizontal="true"
Android:maxLength="30">
</EditText>
どんな助けでも大歓迎です!
ありがとう!
Runnable
内を開いたり、隠したりしてみてください。
開く
ettext.requestFocus();
ettext.postDelayed(new Runnable() {
@Override
public void run() {
InputMethodManager keyboard = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
keyboard.showSoftInput(ettext, 0);
}
},200);
閉じる
ettext.requestFocus();
ettext.postDelayed(new Runnable() {
@Override
public void run() {
InputMethodManager keyboard = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
keyboard.hideSoftInputFromWindow(ettext.
getWindowToken(), 0);
}
},200);
入力ウィンドウを表示するために間違ったビューを使用しました。
EditText editText = (EditText) findViewById(R.id.editText);
editText.requestFocus();
InputMethodManager imm =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
if(imm != null) {
imm.showSoftInput(editText, 0);
}
これを試して:
final InputMethodManager imm = (InputMethodManager)EnterWordsActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm != null)
{
imm.toggleSoftInput(YOUE_EDTITE_TEXT.SHOW_FORCED,1);
}
フォーカスを要求する前に力textField.clearFocus();
をクリアするまで、上記のいずれも機能しないため、onResume
の最終的なコードは次のようになります。
@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);
}
アクティビティでこのコーディングを使用すると、キーボードが非表示になりますthis.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);