软键盘仅在EditText焦点上显示一次

Sag*_*kar 18 keyboard android android-edittext

谢谢阅读.

我面临一个奇怪的问题:我的应用程序行为是这样的,当Activity启动时,我requestFocus()在一个EditText并显示软键盘.

但是,当我按下后退按钮以关闭键盘并点击时,EditText我不再让键盘弹出.唯一的出路就是重新开始Activity.

这是我的代码的样子:


EditText editText = (EditText) findViewById(R.id.editText);
editText.requestFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        if(imm != null) {
            imm.toggleSoftInput(0, 0);
            imm.showSoftInput(editText, InputMethodManager.SHOW_FORCED);    
        }
Run Code Online (Sandbox Code Playgroud)

这是我的XML:


<EditText android:id="@+id/editText" 
        android:layout_width="wrap_content"
        android:imeOptions="actionSearch" android:hint="Test Hint"
        android:layout_height="wrap_content" android:layout_centerHorizontal="true" 
        android:maxLength="30"> 
</EditText>
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激!

谢谢!

Lal*_*ani 58

尝试打开并隐藏在内部Runnable,

打开

                 ettext.requestFocus();
                 ettext.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        InputMethodManager keyboard = (InputMethodManager)
                        getSystemService(Context.INPUT_METHOD_SERVICE);
                        keyboard.showSoftInput(ettext, 0);
                    }
                },200);
Run Code Online (Sandbox Code Playgroud)

关闭

                    ettext.requestFocus();
                    ettext.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        InputMethodManager keyboard = (InputMethodManager)
                        getSystemService(Context.INPUT_METHOD_SERVICE);
                        keyboard.hideSoftInputFromWindow(ettext.
                                                         getWindowToken(), 0);
                    }
                },200);
Run Code Online (Sandbox Code Playgroud)


Ron*_*nie 6

您使用错误的视图来显示输入窗口.

EditText editText = (EditText) findViewById(R.id.editText);
editText.requestFocus();
InputMethodManager imm =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
if(imm != null) {
    imm.showSoftInput(editText, 0); 
}
Run Code Online (Sandbox Code Playgroud)