Voglio rilevare l'evento Back Key nel mio CustomView (ad es. EditText). In molti casi, è stato ottenuto sovrascrivendo lo onKeyDown()
o dispatchKeyEvent()
, a condizione che il mio CustomView ottenga lo stato attivo.Come rilevare il tasto Indietro nel mio CustomView
CustomView.java
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK) {
.....
return true;
}else{
return super.onKeyDown(keyCode, event);
}
}
Tuttavia, se un'attività compresa la CustomView è anche override del onKeyDown()
o dispatchKeyEvent()
, potrebbe non funzionare più. Cioè, l'Activity ha ottenuto il Back-KeyEvent prima che CustomView lo abbia.
Preferisco preferire il Back-KeyEvent prima dell'attività.
per favore dimmi alcune idee su questo problema. Grazie.
Non è del tutto vero. Il metodo 'onKeyDown' in' Activity' viene chiamato quando un tasto viene premuto e non gestito da nessuna delle viste all'interno dell'attività. Prima viene chiamato onKeyDown sulla Vista focalizzata, quindi su Attività, quindi sul resto. –
Ma per quanto stiamo restituendo false, andrà al prossimo ricevitore. Destra? Sebbene la risposta di @MoshErsan potrebbe essere preferibile per farlo. Ma come accennato nella domanda, onKeyDown è già sovrascritto in Activity, quindi devi tornare falso lì, non importa cosa! :) –
È proprio come dici tu. A tuo favore, potrei capire l'ordine in cui vengono chiamati i metodi. In realtà quando ho provato, era 'Visualizza # onKeyPreIme',' Attività # dispatchKeyEvent', 'Visualizza # dispatchKeyEvent',' Visualizza # onKeyDown', infine, 'Attività # onKeyDown'. Grazie! – Gottie