Mi piace che le mie interfacce utente siano intuitive; ogni schermata dovrebbe guidare l'utente in modo naturale e discreto al passaggio successivo nell'app. A parte ciò, mi sforzo di rendere le cose il più confuse e confuse possibile.
Stavo solo scherzando :-)
Ne ho tre TableRow, ciascuno contenente un controllo EditText di sola lettura e non attivabile e quindi un pulsante alla sua destra. Ogni pulsante avvia la stessa attività ma con un argomento diverso. L'utente effettua una selezione lì e l'attività secondaria termina, compilando l'appropriato EditTextcon la selezione dell'utente.
È il classico meccanismo di valori a cascata; ogni selezione restringe le opzioni disponibili per la selezione successiva, ecc. Pertanto, disabilito entrambi i controlli su ciascuna delle righe successive finché EditText sulla riga corrente non contiene un valore.
Devo fare una delle due cose, in questo ordine di preferenza:
- Quando si fa clic su un pulsante, rimuovere immediatamente lo stato attivo senza impostare lo stato attivo su un pulsante diverso
- Imposta lo stato attivo sul primo pulsante quando inizia l'attività
Il problema si manifesta dopo il ritorno della sottoattività; il pulsante su cui si è fatto clic mantiene lo stato attivo.
Ri: # 1 sopra - Non sembra esserci un removeFocus()metodo o qualcosa di simile
Ri: # 2 sopra - Posso usare requestFocus()per mettere a fuoco il pulsante nella riga successiva, e funziona dopo il ritorno dell'attività secondaria, ma per qualche motivo non funziona nell'attività genitore onCreate().
Ho bisogno di coerenza dell'interfaccia utente in entrambe le direzioni: o nessun pulsante è attivo al termine dell'attività secondaria o ogni pulsante viene attivato a seconda della sua posizione nel flusso logico, incluso il primo (e unico) pulsante attivo prima di qualsiasi selezione.