首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用InputMethodManager.showSoftInput后键盘不会显示

调用InputMethodManager.showSoftInput后键盘不会显示
EN

Stack Overflow用户
提问于 2017-10-20 10:49:59
回答 2查看 1.4K关注 0票数 0

我这样称呼这个方法:

代码语言:javascript
复制
getInputMethodManager().showSoftInput(view, 0, resultReceiver);

但是,我的屏幕上没有显示键盘,resultReceiver也没有收到onReceiveResult(int resultCode, Bundle resultData)中的消息。视图不是null和hasFocus() == true

有人知道这个问题吗?非常感谢。

谢谢Karthik和Imen。我需要知道这个方法不起作用的根本原因,而不是一些解决办法。

更新2017/10/23

我在android源代码中进行了调试,发现:一个名为mServedView的变量为null,该方法将返回一个false。但是,official doc没有说明为什么或者何时这个方法会返回一个false

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-20 11:16:39

就像这样:

用于显示键盘:

代码语言:javascript
复制
public void showSoftKeyboard(Context ctx, View v) {
        InputMethodManager imm = (InputMethodManager) ctx.getSystemService(
                Context.INPUT_METHOD_SERVICE);
        imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
    }

用于隐藏键盘:

代码语言:javascript
复制
public void hideSoftKeyboard(Context ctx, View v) {
        InputMethodManager inputManager = (InputMethodManager) ctx.getSystemService(
                Context.INPUT_METHOD_SERVICE);
        inputManager.hideSoftInputFromWindow(v.getWindowToken(), 0);
    }
票数 1
EN

Stack Overflow用户

发布于 2017-10-20 11:45:35

试试这个方法:

代码语言:javascript
复制
 public void showSoftKeyboard(View aView) {
        if (aView != null) {
            aView.setFocusable(true);
            aView.setFocusableInTouchMode(true);
            aView.requestFocus();
            InputMethodManager keyboard = (InputMethodManager)
                    getSystemService(Context.INPUT_METHOD_SERVICE);
            keyboard.showSoftInput(aView, 0);
        }
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46847592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档