EditText不显示当前输入(Android 4)

时间:2012-01-30 19:46:02

标签: android android-layout android-4.0-ice-cream-sandwich

我的Android应用程序包含EditText视图,您可以在其中键入一些短消息(单行)。按键盘的 DONE 键会将消息附加到上方的日志视图(TextView)并清除输入视图。

以下是我的观点xml:

的片段
<LinearLayout ...>
    <TextView
        android:id="@+id/logView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <EditText
        android:id="@+id/inputView"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:imeOptions="actionDone"
        android:singleLine="true" />
</LinearLayout>

要处理输入并重置视图,我使用OnEditorActionListener

@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
    ...
    String input = mInputView.getText().toString();
    mInputView.setText(""); // clear the input view
    ...
}

问题

我没有在Android 1.6 - 3上遇到任何问题。但是从IceCreamSandwich(&gt; = Android 4)开始,会出现一个奇怪的错误,间歇性地发生(在大多数情况下是在10-30个输入之后)。

键入某些文本时,输入视图仍为空白。光标仍然在位置0上闪烁,不显示任何文本。虽然单击 DONE 会将(不可见)文本添加到上面的日志视图中,但可以读取文本。同时隐藏键盘使EditText视图中的文本可见。

解决方案

如接受的答案所述,这是一个(并非如此)已知的Android操作系统错误。简单的解决方案是以不同的方式清除EditText视图:

TextKeyListener.clear(mInputView.getText());

3 个答案:

答案 0 :(得分:3)

我有完全相同的问题,即使在较低的API级别。使用时有一个错误:

editText.setText("");

多次清空EditText。这是一个有用的解决方法:

TextKeyListener.clear(editText.getText());

您可以在Google代码网站上了解此错误:http://code.google.com/p/android/issues/detail?id=17508

希望它有所帮助!

答案 1 :(得分:1)

尝试在完成按钮上设置OnClickListener。让onClick(View v)看起来像这样:

@Override
public void onClick(View v){
    kontextTV1.setText(editText1.getText.toString());
}

如果在用户点击完成按钮时拉动文本,则不必使用观察者类。这应该适用于所有版本的android。 (在edittext和textview上获取/设置不太可能改变)。那会处理一个

如果您想在键盘上处理“完成”按钮,请尝试:

editText1.setOnKeyListener(new OnKeyListener() {
    public boolean onKey(final View v, final int keyCode, final KeyEvent event) {
    if (KeyEvent.KEYCODE_ENTER == keyCode) {
        //...
    }
}

答案 2 :(得分:0)

为什么不使用afterTextChanged而不是editorActionListener?