2013-02-11 73 views
4

如果我在我的EditText點擊,虛擬鍵盤簡單不顯示出來。顯示光標,但不鍵入任何鍵盤。的EditText的onClick不顯示虛擬鍵盤

我甚至用手動打開,但只是沒有工作嘗試。

這裏是我的代碼:

public class CreateNote extends Activity { 
EditText titleEdit; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.createnote); 
    titleEdit = (EditText) findViewById(R.id.titleEdit); 
    titleEdit.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      InputMethodManager imm = (InputMethodManager) CreateNote.this 
        .getSystemService(Service.INPUT_METHOD_SERVICE); 
      imm.showSoftInput(titleEdit, 0); 
     } 
    }); 
    } 
    } 

片段佈局:

<FrameLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="#989898" > 

    <EditText 
     android:id="@+id/titleEdit" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@drawable/edittextdrawale" 
     android:ems="10" 
     android:textColor="#fff" 
     android:textColorHint="#fff" > 

     <requestFocus /> 
    </EditText> 

</FrameLayout> 

什麼可以玩捉迷藏的原因,尋求我的虛擬鍵盤? 我在真實設備上測試,而不是在仿真器上測試。

回答

9

嘗試這個,它爲我工作。

EditText etHorseName = (EditText) getView().findViewById(R.id.horseName); 
etHorseName.clearFocus(); 

in onCreate()或者你想要的地方。

0

這只是一種默認行爲,您不假設手動執行此操作,將下面的部分從代碼中刪除。

titleEdit.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 

     InputMethodManager imm = (InputMethodManager) CreateNote.this 
       .getSystemService(Service.INPUT_METHOD_SERVICE); 
     imm.showSoftInput(titleEdit, 0); 
    } 
}); 
3

晚的答案,但在這裏是如何解決這個問題無需添加代碼,只需從你的XML刪除此:

<requestFocus /> 

不知道爲什麼當這是設置鍵盤顯示不出來...但是,如果你先放開焦點然後點擊編輯文本,它會顯示出來。我在Android 2.3.6上遇到了問題,但它在4.1.2上工作,所以也許這是一個早期的錯誤。

0

試圖隱藏和與此代碼顯示鍵盤:

InputMethodManager imm = (InputMethodManager) this.getSystemService(Service.INPUT_METHOD_SERVICE); 
// To show keyboard 
imm.showSoftInput(titleEdit, 0); 
// To hide keyboard 
imm.hideSoftInputFromWindow(titleEdit.getWindowToken(), 0);