Поскольку вы хотите сделать это рекурсивно, вам, вероятно, лучше всего делать несколько совпадений с помощью цикла.
Само Regex плохо подходит для рекурсивного-ничего.
Похоже, вам не хватает атрибута name
в тэгах fragment
в файле макета активности. Существует два способа получить фрагмент, завышенный в вашей иерархии просмотров:
Кажется, что вы смешали эти две парадигмы вместе, что и вызывает у вас проблемы.
Чтобы сделать все в XML-макете, вы должны указать name
. Итак, что-то вроде этого:
<fragment
android:name="com.my.package.for.Frag1"
android:id="@+id/frag_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"/>
Затем вы можете удалить код из вашего метода initViews()
, поскольку он больше не нужен.
Если вместо этого вы предпочли бы делать все в коде, тогда вы должны изменить свой макет, чтобы указать пустой контейнер, куда будет идти фрагмент. Например, используйте FrameLayout
вместо тега fragment
, например:
<FrameLayout
android:id="@+id/frag_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"/>
вы объявляете тэг <fragment
в вашем xml
<fragment
android:id="@+id/frag_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:layout_centerHorizontal="true"
android:layout_below="@+id/frag_1"/>
, но вы не указали свойство android:name=
, которое сообщает системе, какой фрагмент он должен создать. Он должен содержать полный путь к подклассу фрагментов, который вы хотите создать. Например,
android:name="path.to.Frag1"