安卓:软键盘无法弹出

5

我在MainActivity布局中有两个EditText。如果我正常运行应用程序,第一个EditText会获得焦点,但软键盘不会打开。

但是当我使用以下代码时:

public class TestingActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        EditText et1 = (EditText) findViewById(R.id.editText1);
        EditText et2 = (EditText) findViewById(R.id.editText2);

        et2.requestFocus();
        InputMethodManager mInputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        mInputMethodManager.showSoftInput(et2, InputMethodManager.SHOW_IMPLICIT);
    }
}

期望第二个EditText获得焦点并打开软键盘。

我只能获得焦点,但是只有当我点击EditText时才会打开软键盘。

谢谢

5个回答

7
尝试在您的 AndroidManifest.xml 文件中为您的活动指定 android:windowSoftInputMode 属性。

例如:

<activity android:name=".TestingActivity" android:windowSoftInputMode="stateVisible|adjustResize" />

您在Activity中可能不需要使用InputMethodManager的任何代码。


不,我的要求是在程序中设置特定EditText的焦点并打开软键盘。 - Archie.bpgc
2
@wsanville,它在2.2版本中可以工作,但在4.1.2中不行。即使在EditText点击时,键盘也不会显示出来。我只在模拟器中检查过。 - java dev
android:windowSoftInputMode="adjustResize" 对我很有效。谢谢。 - praveenb

2

我注意到键盘无法显示的一个原因是选择了特定Android设备不支持的输入类型。例如,InputType.TYPE_NUMBER_VARIATION_NORMAL在我的华硕Transformer上无法工作(没有键盘显示),而InputType.TYPE_CLASS_NUMBER可以正常工作。


1
有时候,你可能需要延迟显示键盘命令。在我的情况下,我做了以下的处理。
editText.postDelayed(new Runnable() {
        @Override
        public void run() {
            InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
        }
    }, 300);

1
    et2.clearFocus();
    et2.requestFocus();
    InputMethodManager mInputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    mInputMethodManager.showSoftInput(et2, InputMethodManager.SHOW_IMPLICIT);

我在Android N平台上遇到了问题,并通过重新聚焦编辑视图来解决它。我不知道为什么编辑视图首先需要清除,但对我来说它很好用。


也许软键盘可能会被Dialogfragment或其他东西覆盖。 - Ronald Saunfe

-2

要将焦点设置到特定的EditText,只需在您的EditText内添加标记即可。

<EditText 
    android:id="@+id/etBox"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:hint="enter into editbox"
    >
    <requestFocus/>
    </EditText>

1
Archie的问题不是关于自动设置编辑文本元素的焦点,而是当编辑文本元素获得焦点时软键盘没有显示出来。 - Shaggy
1
这并没有回答问题,你应该将其删除以避免被踩。 - Cliff Burton

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