タッチイベントを表示するためのソフト入力キーボードを表示しようとしています。この行は機能します:
inputManager.toggleSoftInputFromWindow(getWindowToken(),0,0);
しかし、この行は機能しません:
inputManager.showSoftInput(this,0);
なんでそうなの?ソフト入力をビューに接続したい場合はどうなりますか?ありがとう。
タッチイベントを表示するためのソフト入力キーボードを表示しようとしています。この行は機能します:
inputManager.toggleSoftInputFromWindow(getWindowToken(),0,0);
しかし、この行は機能しません:
inputManager.showSoftInput(this,0);
なんでそうなの?ソフト入力をビューに接続したい場合はどうなりますか?ありがとう。
エミュレータでテストしていると思います。実際のデバイスではありませんか?
AVDでは開きkeyboard
ませんが、がない実際のデバイスでは開きますHard key board
。
テストするにAVD
は、キーボードを無効にする必要があります。
キーボードの使用を無効にするには
Click on AVD manager > open you targeted AVD > Edit > Hardware > New > Keyboard Support > OK > Make it "NO"
これを試して:
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
onclickイベントでこれを試してください。
InputMethodManager imm =
(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,
InputMethodManager.HIDE_IMPLICIT_ONLY);
showSoftInput()
あなたView
が焦点を合わせない限り、機能しません。さらに、最初に電話をかけたり、真に電話をかけたりしない限り、電話をかけることはあなたの焦点requestFocus()
を与えません。 View
setFocusableInTouchMode()
setFocusable()
最初にフォーカスを要求し、次のようにソフト入力を表示する必要があります。
mEditTextStudy.requestFocus();
mEditTextStudy.post(
new Runnable() {
@Override
public void run() {
InputMethodManager imm =
(InputMethodManager)
getActivity()
.getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm != null) {
imm.showSoftInput(mEditTextStudy, SHOW_FORCED);
}
}
});