Добро пожаловать на SO.
Вы не можете не должны иметь двух дочерних элементов внутри FrameLayout (он может иметь только одного) (он может обрабатывать более одного с использованием весов - чтобы избежать наложения - ноэто дорого, так как требует многократных проходов измерения / компоновки, а также потому, что есть лучшие способы перекрывать представления или помещать более одного представления в ViewGroup).
Поэтому замените свой FrameLayout во фрагменте на LinearLayout
или, еще лучше, ConstraintLayout
.
Другая проблема заключается в следующем фрагменте вашей активности:
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@+id/BottomTab"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintVertical_bias="1.0">
<WebView
android:layout_width="match_parent"
android:layout_height="match_parent" android:id="@+id/webview"/>
</FrameLayout>
Удалите это веб-представление оттуда, если это контейнер фрагментов, вы собираетесьпоместить туда свой фрагментный вид, чтобы у вас не было двух детей (ваш фрагмент и веб-просмотр).Ваш фрагмент XML (выше) уже имеет WebView.Вам не нужно два одновременно.
Кроме того, замените все вхождения Left
и Right
на Start
и End
соответственно для лучшей поддержки языков RTL.Например, constraintRight_ToRightOf
должно стать constraintEnd_ToEndOf
и т. Д.
Я бы переместил весь код после создания в onViewCreated(...)
, чтобы убедиться, что ваши представления были созданы, прежде чем вы скажете им сделать что-то (например,загрузить веб-страницу).