【问题标题】:Android: Automatically open on-screen keyboard (soft input method), when jumping back from other activityAndroid:从其他活动跳回时自动打开屏幕键盘(软输入法)
【发布时间】:2021-04-25 23:34:04
【问题描述】:

情况:

我有活动A。它有一个领域。当用户按下“确定”时,它会打开 ActivityB,这只是一个确认对话框。现在,当用户在活动B (setResult(RESULT_CANCEL); finish();) 中按下“取消”按钮时,用户最终会回到活动A

此时我想再次显示键盘,因为用户唯一能做的就是编辑字段。

但由于某些奇怪的原因,它对我不起作用。我看了this discussion 并尝试了设置

android:windowSoftInputMode="stateAlwaysVisible|adjustResize"

在清单或调用中

inputMethodManager.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);

onCreate()onStart()onResume() 中,但这些都不起作用。

我应该补充一点,这个问题只有在我“从其他活动返回”时才会出现。在向前导航期间创建 Activity 时,键盘会按预期显示。

任何有关如何处理此问题的建议将不胜感激。

【问题讨论】:

    标签: android


    【解决方案1】:

    请使用这个

    @Override
        protected void onResume() {
            super.onResume();
            mUserNameEdit.requestFocus();
    
            mUserNameEdit.postDelayed(new Runnable() {
    
                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    InputMethodManager keyboard = (InputMethodManager)
                    getSystemService(Context.INPUT_METHOD_SERVICE);
                    keyboard.showSoftInput(mUserNameEdit, 0);
                }
            },200); //use 300 to make it run when coming back from lock screen
        }
    

    【讨论】:

    • 这对我有用。使用postDelayed() 似乎是关键部分。请您解释一下(或提供解释的链接),为什么会这样?为什么例如简单的post() 在这种情况下不起作用,首先,为什么直接调用inputMethodManager.showSoftInput() 不起作用?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-14
    • 1970-01-01
    • 2011-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多