软键盘不隐藏
Soft keyboard doesn't hide
我的应用有一个 activity 包含三个片段。第一个 (Frg1) 和第三个 (Frg3) 片段中有列表视图。第二个片段 (Frg2) 有一个 editText。
当我启动 Frg2 时自动显示软键盘。这是正确的。
我试试 Frg2.onPause 这个代码
@Override
public void onPause() {
super.onPause();
editText.post(new Runnable() {
@Override
public void run() {
editText.clearFocus();
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
}
});
}
当我在 Frg3 软键盘隐藏后启动 Frg1 或 Frg2 但渲染后 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();
}
谢谢大家!
我的应用有一个 activity 包含三个片段。第一个 (Frg1) 和第三个 (Frg3) 片段中有列表视图。第二个片段 (Frg2) 有一个 editText。 当我启动 Frg2 时自动显示软键盘。这是正确的。 我试试 Frg2.onPause 这个代码
@Override
public void onPause() {
super.onPause();
editText.post(new Runnable() {
@Override
public void run() {
editText.clearFocus();
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
}
});
}
当我在 Frg3 软键盘隐藏后启动 Frg1 或 Frg2 但渲染后 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();
}
谢谢大家!