2010-08-19 97 views
1

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

我做错了吗?

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

你确定onResume()正在调用,而不是其他onStart()? Mabye添加一些吐司或打印线,看看logcat?我发现这通常是我的问题,像这样的东西。 – Mike 2010-08-19 00:24:15

+0

@Mike您可以阅读活动生命周期文档,而不是喷洒打印语句。 http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle正如你所看到的,onResume会在每次活动焦点时被调用。 – 2010-08-19 00:46:59

回答

0

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

+0

嗯。我试图用这条线和出去。这是一个棘手的测试,我无法通过代码成功显示键盘。 – 2010-08-19 14:11:40

0

getWindow()。setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); 可能会帮助你。 请注意,有Android设备的硬件键盘在那里。 e.G. GoogleTV设备通常没有触摸屏,而是一个硬件键盘。有些甚至模拟触摸屏。

这是相关的,如果你是在一个模拟器开发:

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

“实验时我实际上并没有得到我想要的东西,直到我意识到我应该有没有硬件键盘仿真器设备”

+0

我刚刚证实,show_forced工程,但只有在没有硬件键盘的真实设备上,并在您明显地设置模拟器没有硬件键盘的模拟器。 – 2011-07-11 10:28:59