显示和隐藏软键盘不起作用

Showing and hiding the soft keboard does not work

不确定它是否相关,但我使用的是带 Android 4.4.2

的 LG G3

我有一个要显示键盘的片段,因此我执行了以下操作:

txtContact = (EditText) rootView.findViewById(R.id.txtContact);
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(txtContact.getWindowToken(), InputMethodManager.SHOW_IMPLICIT);

布局是这样的,包括相关字段的 requestFocus:

<EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textMultiLine"
        android:ems="10"
        android:lines="10"
        android:layout_margin="10dp"
        android:id="@+id/txtContact">

        <requestFocus />
    </EditText>

打开这个片段时,光标在它应该在的地方,但键盘不在,只有在字段内部点击时,它们才会出现。

另一个问题与第一个问题相反。在另一个片段上,无论如何,我都想在片段打开时隐藏键盘。这样做的原因是,用户可以在关闭另一个显示键盘的片段后打开此片段,所以我想确保它关闭,请注意我不知道是否显示了键盘,我希望它如果它是打开的,则保持关闭;如果它打开,则保持关闭。我在这个片段中只有一个 ListView,所以我做了以下操作:

lv = (ListView) rootView.findViewById(android.R.id.list);
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(lv.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);

但它拒绝对键盘产生任何影响,它仍然保持打开状态。

我做错了什么?

尝试将 onResume()post() 中的代码作为 Runnable 调用。 如果您的 FragmentDialogFragment,那么在 onCreateView() 中调用 getDialog().getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE); 应该就足够了。