2011-09-02 82 views
18

感謝您的閱讀。軟鍵盤只出現在EditText焦點上

我面臨一個奇怪的問題:我的應用程序行爲是這樣的,當Activity開始時,我requestFocus()EditText並顯示軟鍵盤。

但是,當我按下後退按鈕以關閉鍵盤並點擊EditText我不會讓鍵盤再次彈出。唯一的出路是再次開始Activity

這裏是我的代碼如下所示:


EditText editText = (EditText) findViewById(R.id.editText); 
editText.requestFocus(); 
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
     if(imm != null) { 
      imm.toggleSoftInput(0, 0); 
      imm.showSoftInput(editText, InputMethodManager.SHOW_FORCED);  
     } 

這是我的XML:


<EditText android:id="@+id/editText" 
     android:layout_width="wrap_content" 
     android:imeOptions="actionSearch" android:hint="Test Hint" 
     android:layout_height="wrap_content" android:layout_centerHorizontal="true" 
     android:maxLength="30"> 
</EditText> 

任何幫助將不勝感激!

謝謝!

回答

57

嘗試打開和隱藏Runnable爲內,

TO OPEN

    ettext.requestFocus(); 
       ettext.postDelayed(new Runnable() { 
        @Override 
        public void run() { 
         InputMethodManager keyboard = (InputMethodManager) 
         getSystemService(Context.INPUT_METHOD_SERVICE); 
         keyboard.showSoftInput(ettext, 0); 
        } 
       },200); 

TO CLOSE

    ettext.requestFocus(); 
        ettext.postDelayed(new Runnable() { 
        @Override 
        public void run() { 
         InputMethodManager keyboard = (InputMethodManager) 
         getSystemService(Context.INPUT_METHOD_SERVICE); 
         keyboard.hideSoftInputFromWindow(ettext. 
                 getWindowToken(), 0); 
        } 
       },200); 
+1

這工作!我剛剛使用打開鍵盤代碼雖然,我只是打回來鍵隱藏鍵盤。謝謝!:) –

+1

唯一的解決方案工作:) – Bora

+0

適用於SDK 17 /最小8 /目標17! –

6

您使用錯誤的視圖來顯示輸入窗口。

EditText editText = (EditText) findViewById(R.id.editText); 
editText.requestFocus(); 
InputMethodManager imm =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
if(imm != null) { 
    imm.showSoftInput(editText, 0); 
} 
+0

感謝您指出,我只是糾正它。在構思問題時,這是一個錯字。但原始代碼有正確的看法。 –

4

試試這個:

final InputMethodManager imm = (InputMethodManager)EnterWordsActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE); 
    if (imm != null) 
    { 
     imm.toggleSoftInput(YOUE_EDTITE_TEXT.SHOW_FORCED,1); 
    } 
+0

您的意思是imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,1);對?如果是的話,那沒有工作:(謝謝你的時間 –

+0

@SagarHatekar你可能已經添加了一些東西到你的清單,我已經嘗試了很多次,它工作正常 –

0

在您活動這個編碼,它會隱藏鍵盤this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

相關問題