活动开始时显示软键盘

Al.*_*Al. 54 keyboard android soft-keyboard

我有2个活动,A和B.当A启动时,它检查一个条件,如果为true,则调用startActivityForResult()启动B.B只接受文本输入,因此软键盘在B启动时自动弹出是有意义的.当活动开始时,EditText已经具有焦点并准备输入.

问题是键盘永远不会出现,即使windowSoftInputMode="stateAlwaysVisible"<activity>B标签下的清单中设置也是如此.我也尝试将值设置为stateVisible.由于它没有自动显示,我必须点击EditText才能显示.

任何人都知道解决方案可能是什么?

Leo*_*Leo 95

最适合我的是在Android Manifest中添加活动B.

android:windowSoftInputMode="stateVisible"

希望对你有所帮助.

  • 对于像我这样的新手:你必须在<activity android:name ="之后添加这一行.MyActivity" (3认同)
  • 我应该注意到,到目前为止,这适用于运行2.2的Nexus One,但是一些摩托罗拉设备(如Milestone 2.1)似乎忽略了这一点. (2认同)

Unc*_*ion 19

最简单的解决方案:放

android:windowSoftInputMode = "stateVisible" 
Run Code Online (Sandbox Code Playgroud)

在AndroidManifest.xml的Activity部分中


syn*_*nic 13

如果在EditText上的requestFocus没有显示它,也许这样做:

InputMethodManager imm = (InputMethodManager)getSystemService(
    Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(mEditText, 0);
Run Code Online (Sandbox Code Playgroud)

这里了解更多信息.


Pau*_*aul 11

对我来说,只使用此解决方案:为该活动添加清单:

android:windowSoftInputMode="stateVisible|adjustPan"
Run Code Online (Sandbox Code Playgroud)


小智 8

我有两种方法。

方法一 、在OnCreate方法中使用如下代码

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Run Code Online (Sandbox Code Playgroud)

除非您单击,否则它将防止弹出键盘。

或者

方法 2您可以通过在 xml 中使用“requestfocus”将焦点移到 TextView 等其他视图上。

<TextView
            android:id="@+id/year_birth_day"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="1991">            
           <requestFocus />
           </TextView>
Run Code Online (Sandbox Code Playgroud)

方法3(我认为应该可以避免)在清单中使用以下代码-

android:windowSoftInputMode="stateVisible"
Run Code Online (Sandbox Code Playgroud)

  • 使用 &lt;requestFocus/&gt; 是唯一对我有用的方法。谢谢 (2认同)

whl*_*hlk 5

尝试显示键盘有一些延迟.与此类似的东西:

public void onResume() {
    super.onResume();

    TimerTask tt = new TimerTask() {

        @Override
        public void run() {
            InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.showSoftInput(yourTextBox, InputMethodManager.SHOW_IMPLICIT);
        }
    };

    final Timer timer = new Timer();
    timer.schedule(tt, 200);
}
Run Code Online (Sandbox Code Playgroud)

  • 计时器任务?为了什么? (2认同)