2013-02-11 74 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);