我的应用程序有一个活动,包含三个片段。在第一个(Frg1)和第三个(Frg3)片段中有listview。第二个片段(Frg2)具有一个editText。
启动Frg2时自动显示软键盘。这是正确的。
我尝试Frg2.on暂停此代码

@Override
public void onPause() {
    super.onPause();

    editText.post(new Runnable() {
        @Override
        public void run() {
            editText.clearFocus();
            imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
        }
    });
}


当我启动Frg1或Frg2之后,Frg3软键盘隐藏,但渲染后再次显示Frg1 / Frg2键盘。

代码示例(在Frg3中):

@Override
public void onResume() {
    super.onResume();
    editText.requestFocus();
}




        editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            editText.post(new Runnable() {
                @Override
                public void run() {
                    imm.showSoftInput(editText, 0);
                }
            });
        }
    });


在Manifest.xml中

<activity android:name=".ContentActivity"
          android:configChanges="keyboardHidden|orientation|screenSize"
          android:screenOrientation="portrait"
          android:windowSoftInputMode="adjustResize" >


可能是什么问题呢?

更新

我找到了解决方案

1.删​​除



editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            editText.post(new Runnable() {
                @Override
                public void run() {
                    imm.showSoftInput(editText, 0);
                }
            });
        }
    });


2.添加



@Override
public void onResume() {
    super.onResume();
    editText.requestFocus();
    imm.showSoftInput(editText, 0);
}






@Override
public void onPause() {
    super.onPause();
    View v = getActivity().getCurrentFocus();
    if(v != null) {
        v.clearFocus();
        imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
    }
    editText.clearFocus();
}


谢谢大家!

最佳答案

我找到了解决方案

1.删​​除



editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        editText.post(new Runnable() {
            @Override
            public void run() {
                imm.showSoftInput(editText, 0);
            }
        });
    }
});


2.添加



 @Override
 public void onResume() {
    super.onResume();
    editText.requestFocus();
    imm.showSoftInput(editText, 0);
 }


3.添加



@Override
public void onPause() {
    super.onPause();
    View v = getActivity().getCurrentFocus();
    if(v != null) {
        v.clearFocus();
        imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
    }
    editText.clearFocus();
}


谢谢大家!

关于android - 软键盘不会隐藏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31241352/

10-10 07:02