2012-07-03 8 views
20

最新のJelly Beanエミュレータの動作に問題があります。私はいくつかEditTexts私のアプリにあります。 OnEditorActionListenerは、ユーザーがキーボードのEnterキーを押したときに特別な処理を行います。これはICSまで機能しましたが、今やJelly BeanではリスナーコールバックメソッドonEditorAction()が呼び出されなくなりました。 EditTextには新しい行だけが挿入されます。Jelly BeanエミュレータでEnterキーを押した後にonEditorAction()が呼び出されない

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); 

これはジェリービーンのバグです:

これは、この方法を再現することができますか?またはエミュレータで?あるいは、その行動が意図的に変更されていますか?私はこのいくつかをテストしてみた

null keyevent and actionid = 0 in onEditorAction() (Jelly Bean/Nexus 7)

+1

予想通りこのサンプルプロジェクトが動作します。https://github.com/commonsguy/cw-omnibus/tree/master/ActionBar/ActionBarDemo – CommonsWare

+0

@CommonsWare:ありがとう、私は私のための回避策を見つけましたあなたのコード内の問題。次の操作を行うと、ENTERキーが仮想キーボードのGOキーと交換され、onEditorAction()をトリガーします。editText.setRawInputType(InputType.TYPE_CLASS_TEXT); editText.setImeOptions(EditorInfo.IME_ACTION_GO); – Hendrik

+1

またはXMLの場合:android:imeOptions = "actionGo" \t \t android:inputType = "text" – Hendrik

答えて

32

は、他の誰かがこの質問を見つけた場合:他の

不思議誰かがここにジェリービーンを実行しているネクサス7の上に、予想外のパラメータを持つメソッドが呼び出されることを書き込みますが、ジェリー・ビーン・エミュレータでは、仮想キーボード上でEnterキーが押されたときに、onEditorAction()というリスナー・コールバック・メソッドが実際に呼び出されることはなくなりました。

上記のとおり、可能な解決策または回避策は、Enterキーを使用可能なアクションキーの1つに置き換えることです。それらはまだonEditorAction()を起動します。入力の種類も指定する必要がありました。

editText.setRawInputType(InputType.TYPE_CLASS_TEXT); 
editText.setImeOptions(EditorInfo.IME_ACTION_GO);
<EditText 
... 
android:imeOptions="actionGo" 
android:inputType="text" /> 
+2

携帯電話がimeActionsをまったくサポートしていない場合はどうなりますか? (ない多くのデバイスがあります。) – Darpan

関連する問題