感谢阅读。
我遇到一个奇怪的问题:我的应用行为是这样的,当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);
}
这是我的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>
非常感谢任何帮助!
谢谢!
答案 0 :(得分:57)
尝试在Runnable
内打开并隐藏,
开启
ettext.requestFocus();
ettext.postDelayed(new Runnable() {
@Override
public void run() {
InputMethodManager keyboard = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
keyboard.showSoftInput(ettext, 0);
}
},200);
关闭
ettext.requestFocus();
ettext.postDelayed(new Runnable() {
@Override
public void run() {
InputMethodManager keyboard = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
keyboard.hideSoftInputFromWindow(ettext.
getWindowToken(), 0);
}
},200);
答案 1 :(得分: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);
}
答案 2 :(得分:4)
试试这个:
final InputMethodManager imm = (InputMethodManager)EnterWordsActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm != null)
{
imm.toggleSoftInput(YOUE_EDTITE_TEXT.SHOW_FORCED,1);
}
答案 3 :(得分:1)
以上所有工作均未完成,直到我在请求集中注意力之前先清除了textField.clearFocus();
的力量,所以我在onResume
中的最终代码如下所示。
@Override
public void onResume() {
super.onResume();
Log.d(TAG, "onResume: ");
resumed = true;
textField.postDelayed(new Runnable() {
@Override
public void run() {
textField.clearFocus();
textField.requestFocus();
if (!editMode)
textField.getText().clear();
inputMathodType = SharedPref.read(SharedPref.KEY_INPUT_MATHOD_SHARED_PREF, -1);
setInputMethod();
}
}, 200);
}
答案 4 :(得分:0)
在您的活动中使用此编码,它会隐藏您的键盘this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);