2010-03-17 111 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"