Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.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_Keyboard - Fatal编程技术网

Android 防止软键盘被丢弃

Android 防止软键盘被丢弃,android,keyboard,Android,Keyboard,有许多问题与如何以编程方式显示/隐藏软键盘有关 然而,正如我们所知,android的后退按钮将导致键盘被关闭。 有没有一种方法可以防止用户通过按“后退”按钮来关闭键盘 我试图捕捉“后退”按钮,但当键盘显示为On时,当按下“后退”键且软键盘可见时,我的活动中的KeyDown不会被调用 任何建议都将不胜感激。我采用以下两种方法: @Override public boolean onKeyUp(int keyCode, KeyEvent event) { if (keyCode == Key

有许多问题与如何以编程方式显示/隐藏软键盘有关

然而,正如我们所知,android的后退按钮将导致键盘被关闭。 有没有一种方法可以防止用户通过按“后退”按钮来关闭键盘

我试图捕捉“后退”按钮,但当键盘显示为On时,当按下“后退”键且软键盘可见时,我的活动中的KeyDown不会被调用


任何建议都将不胜感激。

我采用以下两种方法:

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK)     
    {
        ((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput
                (InputMethodManager.SHOW_FORCED,InputMethodManager.HIDE_IMPLICIT_ONLY);
    }
    return super.onKeyUp(keyCode, event);
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK)     
    {
        ((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput
                (InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
    }
    return super.onKeyDown(keyCode, event);
}
我找到了解决方案:

public class KeyBoardHolder extends EditText {
    public KeyBoardHolder(Context context) {
        super(context);
    }

    public KeyBoardHolder(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public KeyBoardHolder(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    public KeyBoardHolder(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
    }

    @Override
    public boolean onKeyPreIme(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            return true;
        }
        return false;
    }
}

这可以防止键盘被“后退”按钮关闭。

这似乎有点反用户。为什么要这样做?不起作用,键盘继续隐藏在“后退”按钮上