36

showSoftInput()キーボードは表示されませんが、表示されますtoggleSoftInput()。エミュレーターの使用時にハード キーボードを無効にするという別の投稿を見ましたが、エミュレーターは使用していません。ハード キーボードのない実際のデバイスに APK をロードしています。両方の方法が機能するべきではありませんか?なぜ機能しないshowSoftInput()のですか?キーボードを特定のテキスト フィールドに明示的に関連付けたいと思います。

動作しません:

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
editText.setText("textchange"); //i see the text field update
imm.showSoftInput(editText, InputMethodManager.SHOW_FORCED);

作品:

InputMethodManager imm = (InputMethodManager) getDelegate().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
4

8 に答える 8

5

キーボード + フォーカスを表示し、キーボードを非表示にする場合も

@Override
public void onResume () {
    super.onResume();

    inputSearch.setFocusableInTouchMode(true);
    inputSearch.requestFocus();

    // Show Keyboard
    InputMethodManager imm = (InputMethodManager) getSherlockActivity().getSystemService(
            Context.INPUT_METHOD_SERVICE);
    imm.showSoftInput(inputSearch, InputMethodManager.SHOW_IMPLICIT);
}

PS inputSearch = (EditText) getSherlockActivity().findViewById(R.id.inputSearch);

    // Hide Keyboard
InputMethodManager imm = (InputMethodManager) getSherlockActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(inputSearch.getWindowToken(), 0);
于 2013-07-18T05:42:21.627 に答える
2

この質問に対する正確な答えは、showSoftInput が機能せず、toggleSoftInput が機能するのはなぜですか?

キーボードを表示しようとしているビューにフォーカスがありません。したがって、この問題を解決し、メソッドshowSoftInputを使用するには、ビューのメソッドに対して次を呼び出す必要があります。

  setFocusable(true);
  setFocusableInTouchMode(true); 

上記のメソッドを呼び出すと、ビューをクリックしたときにフォーカスが保持され、キャプチャされるようになります。

于 2013-07-08T15:58:57.983 に答える
2

デバイスにハード (スライド式) キーボードがある場合、showSoftInput() が機能しない

showSoftInput を使用した Android show softkeyboard が機能していませんか?

于 2013-08-06T14:52:18.943 に答える
1

これを試して:

public void showTheKeyboard(Context context, EditText editText){
    InputMethodManager imm = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
}

これがうまくいかない場合は、ここからチュートリアルを読んでください

于 2012-12-04T08:47:10.050 に答える
1
public void hideKeyboard() {
    myTextView.setFocusable(true);
    myTextView.setFocusableInTouchMode(true);
    imm.hideSoftInputFromWindow(myTextView.getWindowToken(), 0);
}

作品

public void hideKeyboard() {
    imm.hideSoftInputFromWindow(myTextView.getWindowToken(), 0);
}

動作しません

Fragmentを使用しているため、immは以前に処理されています。

フラグメントで imm を宣言する

private InputMethodManager imm;

次に、フラグメントに次を追加します。

@Override
    public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    imm = (InputMethodManager)
    getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
}

彼は、3〜4時間の研究と失敗の後に言います!!

ありがとう user_CC ! :-)

フィル

于 2014-09-17T18:30:58.183 に答える
0

この投稿がかなり古いことは知っていますが、この日付から回答を求めて上記のいずれも機能しなかった人にとっては. 以下のコードは、アラート ダイアログがポップアップしたときにアクティビティで機能しました。

InputMethodManager keyboard = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);

キーボードを表示するには:

keyboard.toggleSoftInput(editText.getPaintFlags(), 0);

キーボードを非表示にするには:

keyboard.hideSoftInputFromWindow(editText.getWindowToken(), 0);
于 2020-12-07T20:38:25.097 に答える