【问题标题】:android force keyboard visibleandroid强制键盘可见
【发布时间】:2011-07-11 17:53:29
【问题描述】:

我的函数,从 onResume() 运行不会导致键盘出现。

我做错了吗?

private void showKeyboard() {
InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.showSoftInput(txtSearch, InputMethodManager.SHOW_FORCED);
txtSearch.requestFocus();}

【问题讨论】:

  • 你确定 onResume() 被调用而不是其他类似 onStart() 的东西吗? Mabye 添加一些 toast 或打印行并查看 logcat?我发现这通常是我遇到此类问题的问题。
  • @Mike 与其散布打印语句,不如通读活动生命周期文档。 developer.android.com/reference/android/app/… 如您所见,每次活动获得焦点时都会调用 onResume。

标签: android uikeyboard


【解决方案1】:

软键盘有时会很棘手。我相信最后一行,txtSearch.requestFocus() 是不必要的,实际上可能会把事情搞砸。通过在 txtSearch 上告诉键盘 SHOW_FORCED 你已经告诉它有焦点。

【讨论】:

  • 嗯。我尝试了那条线并且没有。这是一个棘手的测试,我无法通过代码成功显示键盘。
【解决方案2】:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); 可以帮助你。 请注意,那里有带有硬件键盘的 Android 设备。 例如。 GoogleTV 设备通常没有触摸屏,只有硬件键盘。 有些甚至在模拟触摸屏。

如果您在模拟器中开发,这很重要:

http://plainoldstan.blogspot.com/2010/09/android-set-focus-and-show-soft.html

“在进行实验时,我实际上并没有得到我想要的,直到我意识到我应该有一个没有硬件键盘的模拟器设备:”

【讨论】:

  • 我刚刚确认 show_forced 有效,但仅适用于没有硬件键盘的真实设备以及您明确设置模拟器没有硬件键盘的模拟器。
猜你喜欢
  • 2014-03-22
  • 1970-01-01
  • 1970-01-01
  • 2012-03-30
  • 1970-01-01
  • 1970-01-01
  • 2015-07-04
  • 1970-01-01
  • 2013-01-18
相关资源
最近更新 更多