/ / Zdezorientowany co do obsługi zdarzeń związanych z systemem Android. Jakieś dobre wyjaśnienia? - Android, edittext android, keyevent

Zdezorientowani obsługą zdarzeń kluczowych w systemie Android. Jakieś dobre wyjaśnienia? - Android, edytor tekstu na Androida, keyevent

Jestem względnie początkującym z Androidem. Czy ktoś ma rozsądny wyjaśnienie, jak nasłuchiwać klawiszy i klawiszy programowych w EditText / TextView?

Chciałbym zobaczyć obszerny samouczek lub zestaw przykładów.

Jak rozumiem, mogę dodać KeyListener do mojej aktywności, np. onKeyDown (), onKeyUp (), ale kiedy próbuję tego zrobić, nie mogę „wyzwalać zdarzeń dla normalnych kluczy, na przykład HOME i BACK.

Widziałem wzmiankę o używaniu TextWatchera, ale to nie jest to samo, co obsługa zdarzeń klucza surowego.

Wydaje się, że jest tu wiele pół rozwiązań w sprawie SO. Mając nadzieję, że pomożesz usunąć mgłę zamieszania ...

Odpowiedzi:

2 dla odpowiedzi № 1

Musisz przypisać słuchacza klucza nie do aktywności, ale raczej do samego EditText.


2 dla odpowiedzi nr 2

To jest to, czego muszę słuchać w przypadku zdarzeń BACK lub MENU. Po prostu dodaj tę metodę, bez implementowania żadnego interfejsu. Robię to w mojej aktywności BaseActivity, z której dziedziczy się każde działanie.

public boolean onKeyDown(int keyCode, KeyEvent event) {
Log.d(NAME, "Key pressed");

switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
Log.d(NAME, "Back pressed");
// IGNORE back key!!
return true;
/* Muestra el Menú de Opciones */
case KeyEvent.KEYCODE_MENU:
Intent menu = new Intent(this, Menu.class);

// start activity
startActivity(menu);
return true;
}

return super.onKeyDown(keyCode, event);
}

PS: Bardzo odradzam ignorowanie tylnego klawisza.


1 dla odpowiedzi nr 3

Na przykład:

myEditText.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN)
if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER){
//your code here
}
return false;
}
});