当第一个Activity启动时,如何在Android中显示软键盘?

6

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

我在"OnCreate"方法中使用以下代码来显示虚拟键盘:

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

这段代码在任何屏幕上都能正常工作,但在“第一个”活动开始时无法工作。为什么?

我尝试在启动另一个活动时使用它,它可以工作,但在启动“第一个”活动时无法工作。

我尝试将此代码放入事件“OnCreate”等中,但似乎并不起作用。

有没有办法在启动应用程序时“强制”显示键盘?

谢谢提前。

3个回答

25

我找到了解决方案:

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

谢谢!!!


似乎只能在竖屏模式下工作。当我切换到横屏模式时,软键盘就无法弹出。我尝试了两种方式。在启动活动之前将手机置于横屏模式,或在显示活动时切换到横屏模式。有什么提示可以继续进行吗? - Ravishankar V
太好了!这是安卓的bug吗?我试图在onResume()中运行键盘,但第一次没有延迟就无法启动。 - Sash0k

1

如果活动是从后台首次打开,则不会调用onCreate。您是否尝试将该代码放在onResume中?

只有在活动第一次启动或活动被杀死并且用户再次导航到活动时,才会调用onCreate。因此,如果活动仍然存在但在后台运行,则不会调用onCreate。

另一方面,每当活动从后台返回前台(在屏幕上可见)时,都会调用onResume。

如果您感兴趣,这里是活动生命周期的链接 http://developer.android.com/reference/android/app/Activity.html

希望能对您有所帮助。


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);
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接