2010-07-27 11 views
7

Dire che ho due attività in un'applicazione Android, EditPerson e EditEmployee.È possibile condividere in modo sicuro l'ID di una vista Android su più attività?

Sembrerebbe naturale che l'attività EditPerson sia una classe base per l'attività EditEmployee e definisca metodi per il marshalling dei dati da e verso le Viste definite nel layout. L'implementazione dell'attività EditPerson spingerebbe (ad esempio) il campo "Nome" ae da un elemento EditText. Le versioni EditEmployee chiamerebbero la versione della classe base e quindi eseguiranno il marshalling dei propri campi specializzati (ad esempio un id fiscale, ecc.).

Per facilitare il codice condiviso, entrambe le attività dovrebbero disporre di una risorsa di layout che definisca una o più coppie di elementi EditText che condividono lo stesso id. cioè in layout\edit_person.xml non ci sarebbe:

<EditText android:id="@+id/name_editor" /> 

E poi nel layout\edit_employee.xml ci sarebbe qualcosa di simile:

<EditText android:id="@+id/name_editor" /> 
<EditText android:id="@+id/tax_id_editor" /> 
<!-- etc. --> 

Dal momento che il "Dipendente" è una "persona", e ci sono campi in comune (marshalling via ereditarietà), sembrerebbe che l'ID assegnato ("name_editor" nell'esempio precedente) debba essere unico nell'ambito di un'attività (o di un layout?).

Dal mio test, questo sembra funzionare, ma sono paranoico che ci sarebbe un effetto collaterale involontario a questo approccio e l'uso di id di elementi di layout ambigui. Qualcuno può confermare che questa è una pratica sicura e/o sottolineare come alla fine farà esplodere la mia applicazione? Qualcuno ha mai fatto cose simili?

risposta

6

È comune e va bene usare. Specialmente inteso quando si desidera riutilizzare codice/classi, ma utilizzare layout diversi.

+0

Grazie per aver condiviso la tua esperienza. Dato che sono ancora piuttosto nuovo nel mondo di Android, a volte è più difficile avere un'idea di quale sia un approccio sano. – el2iot2

Problemi correlati