5

如果我单击我的 EditText,则不会显示虚拟键盘。显示光标,但没有可键入的键盘。

我什至尝试过手动打开但没有用。

这是我的代码:

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>

我的虚拟键盘玩捉迷藏的原因是什么?我在真实设备上测试,而不是在模拟器上测试。

4

4 回答 4

10

Try with this, it worked for me.

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

in onCreate() or where you want.

于 2013-02-11T11:12:08.467 回答
3

迟到的答案,但这里是如何在不添加代码的情况下解决它,只需从您的 XML 中删除它:

<requestFocus />

不知道为什么设置后键盘不显示...但是如果您首先松开焦点然后单击编辑文本,它确实会显示。我在 Android 2.3.6 上遇到了问题,但它在 4.1.2 上运行,所以也许这是一个早期的错误。

于 2013-05-30T08:55:08.097 回答
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);
    }
});
于 2013-02-11T11:24:25.810 回答
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);  
于 2014-01-10T11:50:29.090 回答