android - InputMethodManager.showSoftInput 为何或何时返回 false?

标签 android android-softkeyboard

我试图在屏幕上弹出一个软键盘,首先以编程方式加载(不更改 list 中的 windowSoftInputMode)。

有趣的是在屏幕上首次加载时,它根本不起作用。这是代码块。

mEDT.requestFocus();
mEDT.requestFocusFromTouch();
mImm.showSoftInput(mEDT, InputMethodManager.SHOW_IMPLICIT);

showSoftInput 返回false,导致软键盘没有显示。

但是当我点击 EditText 时。 showSoftInput 返回 true 并显示软键盘。

谁能给我解释一下发生了什么?

最佳答案

您在使用 Fragments 吗?我发现 showSoftInput() 在 fragment 中不可靠。

查看源码后,发现在onCreate()/onCreateView()onResume中调用requestFocus() () 不会立即使对象获得焦点。这很可能是因为尚未创建内容 View 。因此焦点发生在 Activity 或 Fragment 初始化期间的某个时间。

我在 onViewCreated() 中调用 showSoftInput() 获得了更多成功。

public class MyFragment extends Fragment {
    private InputMethodManager inputMethodManager;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_layout, container, false);

        EditText text1 = (EditText) view.findViewById(R.id.text1);
        text1.requestFocus();

        return view;
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        InputMethodManager inputMethodManager = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
        inputMethodManager.showSoftInput(view.findFocus(), InputMethodManager.SHOW_IMPLICIT);
        super.onViewCreated(view, savedInstanceState);
    }
}

即使您不使用 fragment ,我敢打赌同样的规则也适用。因此,请确保在调用 showSoftInput() 之前创建了 View 。

关于android - InputMethodManager.showSoftInput 为何或何时返回 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35028676/

相关文章:

android - 在 Eclipse 中为 Android 开发 : R. java 未重新生成

android - 获取使用 Android 默认相机拍摄的照片的设备方向

android - 为什么android :windowSoftInputMode ="stateVisible|adjustResize" adjust the screen when soft keyboard is shown?没有

java - 如何防止键盘和菜单同时显示?

android - 在 DialogFragment 中单击 "Cancel"按钮后如何启动软键盘?

android - 当软键盘在 Android 中出现在 View 前面时布局应该上升

android - 为什么我会收到警告 Serialize ArrayList

java - 如何通过 Android 中的线程从资源中获取 XML 文件?

android - 如何在 onSwipe 方法中更改键盘布局?

android - 是否有任何 MediaPlayer 类可以在 android 上播放和缓存音乐