Скажем, у меня есть два действия в приложении для Android, EditPerson
и EditEmployee
.
Казалось бы, естественно, чтобы действие EditPerson
было базовым классом для действия EditEmployee
и определяло методы, которые собирают данные в и из представлений, определенных в макете.Реализация EditPerson
Activity будет выдвигать (например) поле «Имя» к элементу EditText
.EditEmployee
версии будут вызывать версию базового класса, а затем упорядочивать свои собственные специализированные поля (скажем, налоговый идентификатор и т. Д.).
Чтобы упростить общий код, обе операции должны иметь ресурс макетакоторый определяет одну или несколько пар EditText
элементов, которые имеют один и тот же идентификатор.то есть в layout\edit_person.xml
было бы:
<EditText android:id="@+id/name_editor" />
А затем в layout\edit_employee.xml
было бы что-то вроде:
<EditText android:id="@+id/name_editor" />
<EditText android:id="@+id/tax_id_editor" />
<!-- etc. -->
Поскольку «Сотрудник» - это «Человек»,и есть общие поля (маршалируемые через наследование), может показаться, что назначенный идентификатор («name_editor» в приведенном выше примере) должен быть уникальным только в рамках действия (или макета?).
Судя по моему тестированию, это работает, но я параноик, что у этого подхода будет непреднамеренный побочный эффект и использование неоднозначных идентификаторов элементов макета.Может ли кто-нибудь подтвердить, что это безопасная практика, и / или указать, как это в конечном итоге взорвет мое приложение?Кто-нибудь когда-нибудь делал подобные вещи?