фрагмента А содержит ViewPager
, который имеет Фрагмент Б. Фрагмент B содержит RecyclerView
и нажав на его элементов, открывает фрагмента C.Замена Фрагмент внутренних частей ViewPager Открытие фрагмента в ViewPager Размеры
Open Фрагмент C (реализован Фрагмент Б)
private void openItemPage(long id) {
Fragment a2Fragment = CompanyPageFragment.newInstance(id);
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
// store the Fragment in stack
transaction.addToBackStack(null);
transaction.replace(R.id.container, a2Fragment).commit();
}
Фрагмент макета
<LinearLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingTop="15dp">
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:background="@drawable/top_bottom_border"
app:tabBackground="@android:color/transparent"
app:tabIndicatorHeight="0dp"
app:tabMode="fixed">
</android.support.design.widget.TabLayout>
<ir.barandeh.android.views.NonSwipeableViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="never"/>
</LinearLayout>
Фрагмент B Макет
<RelativeLayout android:id="@+id/container"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v4.widget.ContentLoadingProgressBar
android:id="@+id/contentLoading"
style="?android:attr/android:progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"/>
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/refresh"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="never"
android:paddingEnd="10dp"
android:paddingStart="10dp">
</android.support.v7.widget.RecyclerView>
</android.support.v4.widget.SwipeRefreshLayout>
</RelativeLayout>
Фрагмент C Макет
<RelativeLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?android:attr/windowBackground">
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<ir.barandeh.android.views.NonSwipeableViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:overScrollMode="never"/>
</android.support.v4.widget.NestedScrollView>
</RelativeLayout>
Проблема заключается в том, содержание фрагмента С показана внутренняя часть ViewPager
не весь макет фрагмента A.
Мы не можем увидеть макет фрагмента B, но мое предположение было бы, что R .id.container используется для нескольких «ViewGroup». Убедитесь, что файл R.id.container не является идентификатором одного из видов в «RecyclerView» и т. Д. Вы также можете использовать инструмент иерархии представлений, чтобы проверить, где размещен новый фрагмент, и что он заменяет вместо ожидаемого. – frozenkoi
@frozenkoi Я обновил свой вопрос с помощью макетов фрагментов. Можете ли вы просмотреть макеты, пожалуйста? удаление идентификаторов не помогло. – Alireza
Все 3 макета имеют корень с идентификатором 'container'. К какому классу принадлежит 'openItemPage'? Это будет важно для того, чтобы вы могли четко понимать, какой менеджер фрагментов используется для замены фрагментов. Обратите внимание, что документы для 'getChildFragmentManager' (https://d.android.com/reference/android/app/Fragment.html#getChildFragmentManager()) говорят, что он возвращает менеджера для размещения внутри текущего фрагмента, контрастируя с' getFragmentManager 'который возвращает менеджер для верхнего уровня. Поэтому, если функция 'openItemPage' является частью фрагмента B, она не увидит родительский' container'. – frozenkoi