2010-03-17 132 views
42

我有两个活动,A和B.当A开始时,它检查一个条件,如果为真,它会调用startActivityForResult()来启动B. B仅接受文本输入,因此对于软件键盘会在B启动时自动弹出。活动开始时,EditText已经有焦点并准备好输入。活动开始时显示软键盘

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

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

+0

下面的代码(在黑暗中拍摄,但)你试过在文本框中requestFocus的? – 2010-03-18 02:37:37

+0

我试过了,没用 – 2010-03-18 16:01:26

回答

11

如果requestFocus的上一个EditText没有显示它,也许这会做到这一点:了解更多信息

InputMethodManager imm = (InputMethodManager)getSystemService(
    Context.INPUT_METHOD_SERVICE); 
imm.showSoftInput(mEditText, 0); 

here

+2

我试过了,但它没有工作 – 2010-03-18 16:04:52

+0

这对我的作品 – fredley 2011-01-11 12:28:27

+1

这应该工作,只要你不指定一个不同的软输入状态其他地方一样,在你的清单或代码中。 。即this.getWindow()setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); – topwik 2012-11-13 14:55:30

75

什么工作对我来说最好的是Android清单的活动b。将

android:windowSoftInputMode="stateVisible"

希望为你以及帮助。

+1

我要指出的是,到目前为止,这非常适用于运行2.2摩托罗拉的设备,但有些歌Nexus One,如Milestone采用2.1似乎忽略了这一点。 – Leo 2011-02-09 21:14:09

+0

谢谢,要做到这一点编程方式检查https://stackoverflow.com/questions/5593053/open-soft-keyboard-programmatically – 2017-02-15 16:02:15

+0

使用'stateVisible'导致键盘重现设备方向更改时。如果不需要这种行为,那么'stateVisible'不是解决方案。 – 2018-01-04 12:48:37

2

如果您使用仿真器,则必须关闭硬键盘才能显示软键盘。

6

尝试类似的措施:

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

计时器任务?为了什么? – busylee 2015-05-20 11:35:55

+0

@busylee你可以使用一个处理程序或在您选择的延迟执行的东西的任何其他方法。这只是一个例子。 – Mannaz 2015-05-20 20:48:47

+0

没有理由使用延迟 – busylee 2015-05-21 05:04:28

10

为我工作只有这个解决方案: 在清单中添加该活动:

android:windowSoftInputMode="stateVisible|adjustPan" 
+0

工作,这样做是为了与硬件键盘设备的工作?我很难在硬件键盘设备(即2.2设备)中使用它 – NinjaCoder 2013-03-08 15:17:04

16

最简单的办法:把

android:windowSoftInputMode = "stateVisible" 

AndroidManifest.xml的Activity部分中

0

文件:AndroidManifest.xml中

<activity android:name=".MainActivity"> 

添加以下属性:

android:windowSoftInputMode="stateVisible" 

这对我的工作。

0

我有两种方法。

方法1. 使用onCreate方法

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 

这将阻止,除非你点击弹出键盘里面的下面的代码。

方法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> 

方法3(我想应该是可以避免的)使用在manifest-

android:windowSoftInputMode="stateVisible" 
相关问题