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

Android 编辑文本时隐藏键盘

Android 编辑文本时隐藏键盘,android,android-edittext,keyboard,hide,show,Android,Android Edittext,Keyboard,Hide,Show,我在一个活动中有两个片段,两个片段都包含一个EditText。当聚焦第一个EditText(显示键盘)并且用户按下键盘的next按钮时,我使用以下代码将焦点转移到第二个片段中的EditText: View next = autoCompleteTextView.focusSearch(View.FOCUS_DOWN); if (next != null) { next.requestFocus(); } 第二个EditText按应有的方式接收焦点(光标开始在其中

我在一个活动中有两个片段,两个片段都包含一个EditText。当聚焦第一个EditText(显示键盘)并且用户按下键盘的next按钮时,我使用以下代码将焦点转移到第二个片段中的EditText:

View next = autoCompleteTextView.focusSearch(View.FOCUS_DOWN);
    if (next != null) {
        next.requestFocus();
    }
第二个EditText按应有的方式接收焦点(光标开始在其中闪烁),但显示的键盘被隐藏。
我不明白为什么会这样。我尝试了上百万种不同的解决方案,强制再次显示键盘,但没有任何效果。我不知道为什么它会被隐藏在第一位,我只是转移注意力。

唯一对我有用的是:

 mComposeMsgBody.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (hasFocus && mComposeMsgBody.isEnabled()) {

                mComposeMsgBody.post(new Runnable() {
                    @Override
                    public void run() {
                        final InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
                        imm.showSoftInput(mComposeMsgBody, InputMethodManager.SHOW_IMPLICIT);
                    }
                });
            }
        }
    });

但这并不理想,因为键盘试图隐藏起来,然后我强迫它向上移动,所以键盘做了1秒的向下向上移动。如果有人有更好的解决方案,可以在不使用键盘的情况下转移焦点,请给出答案。

对我来说唯一有效的方法是:

 mComposeMsgBody.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (hasFocus && mComposeMsgBody.isEnabled()) {

                mComposeMsgBody.post(new Runnable() {
                    @Override
                    public void run() {
                        final InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
                        imm.showSoftInput(mComposeMsgBody, InputMethodManager.SHOW_IMPLICIT);
                    }
                });
            }
        }
    });

但这并不理想,因为键盘试图隐藏起来,然后我强迫它向上移动,所以键盘做了1秒的向下向上移动。如果有人有更好的解决方案,可以在不使用键盘的情况下转移焦点,请给出答案。

您在EditText上设置了
focusable
true
?是,当焦点改变时,我将focusable设置为truetry以编程方式显示和隐藏键盘。您在EditText上将focusable设置为
true
?是的,当焦点改变时,我将focusable设置为truetry以编程方式显示和隐藏键盘。。