У меня есть два вида деятельности: A1
и A2
.
Оба они реализуют два пользовательских представления: V1
и V2
.
Макеты A1
и A2
оба включают V1
и V2
, но макеты как правило, разные. Реализация V1
и V2
- единственное сходство.
Я хотел бы иметь базовый класс Activity ABase
, где я реализую использование V1
и V2
для A1
и A2
во избежание дублирования кода.
Итак, в принципе это то, как концептуально должны выглядеть компоненты:
a_base_layout. xml:
<V1
android:id="@+id/v1"/>
...
<V2
android:id="@+id/v2"/>
ABaseActivity :
init {
...
inflate(a_base_layout.xml)
v1.setValue(value1)
v2.setValue(value2)
....
}
a1_layout. xml:
<RootLayout
...
include="@layout/a_base_layout">
<a_base_layout/v1
android:layout_width="x1"
android:layout_height="y1"
...some positioning and other things...>
<a_base_layout/v2
android:layout_width="x1"
android:layout_height="y1"
...some positioning and other things...>
a2_layout. xml:
<RootLayout
...
include="@layout/a_base_layout">
<a_base_layout/v1
android:layout_width="x2"
android:layout_height="y2"
...some positioning and other things, different from a1_layout...>
<a_base_layout/v2
android:layout_width="x1"
android:layout_height="y1"
...some positioning and other things, different from a1_layout...>
Проблема только с тем, что A1
наследуется от ABaseActivity
без учета разметки, заключается в том, что раздувание a1_layout
перезапишет a_base_layout
, что означает, что мне придется вручную добавить V1
и V2
в a1_layout
, что победило бы всю цель.
Я понял, что мог бы просто создать нормальный интерфейс и иметь для него поля v1
и v2
, но это похоже на для меня обходной путь, который не обязательно работает с автоматически интегрированными id-полями kotlins.
(e.g. `import kotlinx.android.synthetic.mypackage....*`)