第一个活动开始时Android显示软键盘?

时间:2011-03-08 00:53:36

标签: java android keyboard android-activity show

我需要在应用程序启动时显示虚拟键盘,但到目前为止我都失败了。

我在方法“OnCreate”中使用此代码来显示虚拟键盘

    InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.toggleSoftInput(txtBuscar.getId(), InputMethodManager.SHOW_FORCED);

此代码可以随时在任何屏幕上正常工作,但在“第一个”活动开始时不起作用。为什么呢?

当我开始另一项活动时我尝试了它并且它可以工作,但是当我开始“第一次”活动时它不起作用。

我尝试将此代码放入事件“OnCreate”等等......但似乎无效。

无论如何,当我启动应用程序时,是否“强制”显示键盘?

提前致谢。

3 个答案:

答案 0 :(得分:24)

我找到了解决方案:

txtPassword.postDelayed(new Runnable() {
            @Override
            public void run() {
                InputMethodManager keyboard = (InputMethodManager)
                getSystemService(Context.INPUT_METHOD_SERVICE);
                keyboard.showSoftInput(txtPassword, 0); 
            }
        },200);

谢谢!!!

答案 1 :(得分:1)

如果活动首先来自后台,则不会调用

onCreate。您是否尝试过将该代码放入onResume?

仅当活动首次启动或活动被终止且用户再次导航到活动时,才会调用onCreate。因此,如果活动仍处于活动状态但在后台,则不会调用onCreate。

另一方面,每次活动从背景到达前景(在屏幕上可见)时,都会调用onResume。

如果您对[{3}}感兴趣,请点击活动生命周期链接。

希望它有所帮助。

答案 2 :(得分:0)

我遇到了同样的问题,下面的这种方法对我有帮助

public static void showKeyboard(Context context) {
    InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
    if (imm != null) {
        imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
    }
}