Nella maggior parte dei casi, desidero che gli eventi chiave vengano elaborati dalla vista (secondaria) che attualmente ha il focus, che è il comportamento predefinito, ed è anche ciò che attualmente ho implementato.In Android, una persona può intercettare gli eventi chiave a livello globale prima che raggiungano la vista del bambino che ha l'attenzione?
Tuttavia, in determinate circostanze molto specifiche, vorrei intercettare temporanea e gestire tutti gli eventi chiave (tra cui in particolare quelli normalmente gestito dalla vista dei bambini) sia nella mia attività in corso o, in mancanza di questo, a mio avviso root (esso non importa, a patto che vengano elaborati globalmente - non mi importa dei pulsanti hardware come volume +/-, in quanto non sono comunque gestiti in nessuna delle visioni di mio figlio).
Per tocco eventi, abbiamo onInterceptTouchEvent(), che permette un ViewGroup per seguire gli eventi di tocco come esse vengono inviate in vista del bambino, e per bloccare la ricezione di quegli eventi (se si desidera) dalla vista dei bambini per i quali sono sono intesi.
Sfortunatamente, non riesco a trovare nulla di analogo a onInterceptTouchEvent() per eventi chiave. Mi manca qualcosa di ovvio, o si tratta di una vera e propria asimmetria nel sistema operativo?
Ovviamente, potrei semplicemente collegare il codice di gestione eventi chiave corrente di ogni vista figlio per chiamare direttamente un metodo sull'attività principale per gestire l'evento se lo desidera, e per fare in modo che il metodo a livello di attività restituisca un valore booleano che indica se ha gestito l'evento. Quindi, la vista figlio poteva gestire l'evento se e solo se il metodo di attività invocato aveva non gestito da.
Ma spero che ci sia un modo più semplice per intercettare semplicemente il traffico sulla sua strada "in basso" dalla gerarchia alla vista figlio, proprio come onInterceptTouchEvent() fa per gli eventi di tocco.
Nota che sono anche interessato alle risposte che affermano che questo * non può * essere fatto. Se verificato, anche questa risposta potrebbe essere accettata. – Carl
Sono anche curioso di sapere perché questa funzionalità esisterebbe per gli eventi tattili, ma non per gli eventi chiave, se è davvero così. – Carl