Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 显示软输入键盘_Android_Android View_Android Input Method - Fatal编程技术网

Android 显示软输入键盘

Android 显示软输入键盘,android,android-view,android-input-method,Android,Android View,Android Input Method,我正在尝试显示软输入键盘以查看触摸事件。 这条线路的工作原理是: inputManager.toggleSoftInputFromWindow(getWindowToken(),0,0); 但这一行行不通: inputManager.showSoftInput(this,0); 为什么会这样?如果要将软输入连接到视图,该怎么办? 谢谢。试试这个: InputMethodManager imm = (InputMethodManager) getSystemService(Context.IN

我正在尝试显示软输入键盘以查看触摸事件。 这条线路的工作原理是:

inputManager.toggleSoftInputFromWindow(getWindowToken(),0,0);
但这一行行不通:

inputManager.showSoftInput(this,0);
为什么会这样?如果要将软输入连接到视图,该怎么办? 谢谢。

试试这个:

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

在onclick事件中尝试此操作

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

我认为您正在emulator上进行测试。不是在真正的设备上

它不会在AVD上打开
键盘
,但会在没有
硬键盘
的真实设备上打开

要在
AVD
上测试它,需要禁用键盘

禁用键盘使用

Click on AVD manager > open you targeted AVD > Edit > Hardware > New > Keyboard Support > OK > Make it "NO"

showSoftInput()
将无法工作,除非您的
视图具有焦点。此外,除非首先将
setFocusableInTouchMode()
和/或
setFocusableInTouchMode()
调用为true,否则调用
requestFocus()
不会为
视图提供焦点

您需要先请求焦点,然后显示软输入,如下所示:

    mEditTextStudy.requestFocus();
    mEditTextStudy.post(
            new Runnable() {
                @Override
                public void run() {
                    InputMethodManager imm =
                            (InputMethodManager)
                                    getActivity()
                                            .getSystemService(Context.INPUT_METHOD_SERVICE);
                    if (imm != null) {
                        imm.showSoftInput(mEditTextStudy, SHOW_FORCED);
                    }
                }
            });

您是在模拟器上测试还是在真实设备上测试?我认为它不会在AVD上打开键盘,但会在设备上打开,而该设备没有
硬键盘
,它确实在模拟器上。因此,软输入没有打开的原因是仿真器有硬键盘?我想是的..在没有硬键盘的设备上尝试..有没有办法让仿真器认为没有硬键盘?我想…单击AVD管理器>打开目标AVD>编辑>硬件>新建>键盘支持>确定>设置为“否”只需实现onClickListener onView。然后在onClick中执行此操作。正如我在原始消息中所说,我知道toggleSoftInput可以工作,但我想使用showSoftInput,因为它接受视图参数。我知道toggleSoftInput可以工作,但我想使用showSoftInput,因为它接受视图参数,我想将视图连接到键盘。