Я успешно использовал один и тот же включенный макет несколько раз в макете на основе Constraint.
View outer = rootview.findViewByID(R.id.outer);
TextView inner = outer.findViewByID(R.id.inner): //NPE on "outer" here in FrameLayout
View outer_two = rootview.findViewByID(R.id.outer_two);
TextView inner_two = outer_two.findViewByID(R.id.inner):
Прекрасно работает в ConstraintLayout в качестве базового макета для xml !!
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<include
android:layout_width="match_parent"
android:id="@+id/outer"
android:layout_height="0dp"
layout="@layout/button_panel"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopof="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
Однаконе тогда, когда это FrameLayout в качестве базы (т. е. любой макет, который расширяет FrameLayout)
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<include
android:layout_width="match_parent"
android:id="@+id/outer"
android:layout_height="match_parent"
layout="@layout/button_panel"/>
</FrameLayout>
И внутренний макет button_panel.xml
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:id="@+id/inner"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopof="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
Однако, если я попробую то же самое в FrameLayout на основемакет Я получаю NPE.
Может кто-нибудь объяснить мне, почему это не работает в FrameLayout?