W tej chwili używam klawisza Enter w polach EditText za pomocą obiektu onEditorActionListener i patrząc na identyfikator Action ID dla IME_NULL. Działa dobrze dla wszystkich moich użytkowników oprócz jednego. Ma łuk Xperii.Obsługa klawisza Enter w EditText na różnych urządzeniach
TextView.OnEditorActionListener keyListener = new TextView.OnEditorActionListener(){
public boolean onEditorAction(TextView view, int actionId, KeyEvent event) {
if(actionId == EditorInfo.IME_NULL){
if(((EditText)findViewById(view.getId())) == ((EditText)findViewById(R.id.etUser))){
((EditText) findViewById(R.id.etPass)).requestFocus();
}
if(((EditText)findViewById(view.getId())) == ((EditText)findViewById(R.id.etPass))){
logon();
}
}
return true;
}
};
Po nauczeniu się o problemie, próbowałem innego podejścia przy użyciu onKeyListener i szuka klucza ACTION_DOWN zdarzeń następnie sprawdzanie kodu dostępu, jeśli dopasowane KEYCODE_ENTER.
EditText etUserName = (EditText) findViewById(R.id.etUser);
etUserName.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View view, int keyCode, KeyEvent event){
if (event.getAction() == KeyEvent.ACTION_DOWN){
switch (keyCode)
{
case KeyEvent.KEYCODE_DPAD_CENTER:
case KeyEvent.KEYCODE_ENTER:
if(((EditText)findViewById(view.getId())) == ((EditText)findViewById(R.id.etUser))){
((EditText) findViewById(R.id.etPass)).requestFocus();
}
return true;
default:
break;
}
}
return false;
}
});
Brak również kostek. Brakuje mi teraz. Istnieje wiele aplikacji, które obsługują klawisz Enter. co oni robią inaczej?
Czy przypadkiem znalazłeś obejście tego błędu? Właściwie muszę przechwycić Enter-Press, nie tylko zachować tekst w jednym wierszu. – pgsandstrom