3

2 つのフラグメントを持つ単純なアプリケーションがあります。右側のフラグメントが置き換えられています。内部の edittext には requestfocus がありますが、キーボードは表示されません。

Android 4.2.2 では問題なく動作しますが、2.3.x では動作せず、エミュレータでも実際のデバイスでも動作しません。エミュレーターでは、ソフト キーボードは表示されませんが、Windows キーボードで入力できます。

わざとキーボードを隠しているわけではありません。次のコードでキーボードを表示すると、4.2.x でのみ機能します。

InputMethodManager imgr = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imgr.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);

ヒントはありますか?

4

2 に答える 2

3

さらに調査を行うと、次のことがわかりました。

edittext にフォーカスする必要があるため、最初にフォーカスを削除してから元に戻します。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        myFilter.clearFocus();
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    myFilter.requestFocus();
}

キーボードは表示されていませんが、ユーザーが edittext をクリックすると表示されます。

これはまだ 2.3 エミュレーターでは機能しませんが、実際のデバイスでは機能します。ある種の 2.3 バグのようです。

于 2013-05-05T22:09:02.163 に答える