2016-12-21 2 views
0

リターンキーのリスナーを使用して作成フィールドを初期化したいとします。ドキュメントでは、入力キーが押されたために呼び出されている場合、actionIdEditorInfo.IME_NULLとなります。私はその値に対してactionIdを比較しました。また、戻りキーによってトリガーされた場合、私たちはKeyEventオブジェクトを受け取るので、キーのリリースに対応する値であるKeyEvent.ACTION_UPをテストします。 コードを実行すると、KitKatを実行しているデバイスでうまく動作しますが、実行中の他のLollilopでは戻りキーを使用せず、onEditorAction()も呼び出されません。新しい行を挿入するだけです。ここでは、コードがあります:EditTextのリターンキーのAndroidリスナーがすべてのデバイスで機能しない

public void setupChat() { 
    Log.i(LOG_TAG, "setupChat()"); 
    oETConversation.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
     @Override 
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
      Log.i(LOG_TAG, "onEditorAction()"); 
      if (actionId == EditorInfo.IME_NULL && event.getAction() == KeyEvent.ACTION_UP) { 
       String s = v.getText().toString(); 
       sendMessage(s); 
      } 
      return true; 
     } 
    }); 
} 

public void sendMessage(String s) { 
    Log.i(LOG_TAG, "sendMessage()"); 
    Log.i(LOG_TAG, s); 
} 

答えて

1

が、これは私はそれが代わりにkeyEventを使用して行う方法です、これを試してみてください:

oETConversation.setOnKeyListener(new View.OnKeyListener() { 
     @Override 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_ENTER) { 
       String s = oETConversation.getText().toString(); 
       sendMessage(s); 
       return true; 
      } 
      return false; 
     } 
    }); 

・ホープ、このことができます;)

UPDATE

で確認してくださいあなたのXMLのeditTextにはandroid:singleLine="true"フィールドがあります。

+0

これは、KitKatを実行しているデバイスでは動作しますが(代わりに新しい行が追加されます)、API 25を実行する仮想デバイスで動作します。Lollipopでは同じ問題があり、メソッド(onkey()この場合) –

+0

更新された回答を確認@power_output – Jiyeh

+0

ロリポップでも動作します!それでも私はそれが前に方法を呼んでいたことに興味をそそられています。どういう理由ですか? –

関連する問題