在Jelly Bean模拟器上按下Enter键后,不调用onEditorAction()

Hen*_*rik 22 android android-virtual-device android-edittext android-4.2-jelly-bean

我遇到了最新的Jelly Bean模拟器的行为问题.EditTexts我的应用程序中有几个.OnEditorActionListener当用户按下键盘上的ENTER键时,An 提供特殊处理.这一直到ICS,但现在在Jelly Bean上,侦听器回调方法onEditorAction()不再被调用.只插入一个新行EditText.

这可以通过这种方式复制:

EditText testEditText = new EditText(context);
testEditText.setOnEditorActionListener(new OnEditorActionListener() {

    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        Log.d(TAG, "onEditorAction() called");
        return false;
    }
});
addView(testEditText);
Run Code Online (Sandbox Code Playgroud)

这是Jelly Bean中的一个错误吗?还是在模拟器中?或者有意改变了行为?

奇怪的是,其他人写道,该方法被调用,但带有意外的参数,在这里运行Jelly Bean的Nexus 7:onEditorAction()中的null keyevent和actionid = 0(Jelly Bean/Nexus 7)

Hen*_*rik 35

如果其他人发现了这个问题:

我已经多次测试过,在Jelly Bean模拟器上,当在虚拟键盘上按下Enter键时,侦听器回调方法onEditorAction()确实不再被调用.

如上所述,可能的解决方案或解决方法是使用其中一个可用操作键替换Enter键.那些仍然触发onEditorAction().我还必须指定输入类型.

editText.setRawInputType(InputType.TYPE_CLASS_TEXT);
editText.setImeOptions(EditorInfo.IME_ACTION_GO);
Run Code Online (Sandbox Code Playgroud)
<EditText
...
android:imeOptions="actionGo"
android:inputType="text" />
Run Code Online (Sandbox Code Playgroud)

  • 如果手机根本不支持imeActions怎么办?(有很多设备没有.) (3认同)