У меня есть TabLayout с двумя фрагментами, два из которых показывают RecyclerView (один фильм и другой сериал). TabLayout работает отлично, но проблема возникает, когда я нажимаю на изображение фильма. Клик в фильме должен сделать транзакцию во фрагменте фильма. Но когда это происходит, ListFragment с TabLayout появляется под новым, поэтому отображаются оба из них.
My ActivityMain, код, где я вызываю транзакцию и где я устанавливаю адаптер страницы:
override fun onMovieClicked(iDMovie: Int) {
val movieDetails = MovieDetailsFragment.newInstance(iDMovie)
supportFragmentManager.
beginTransaction().
replace(R.id.main_container, movieDetails).
addToBackStack(null).
commit()
}
private fun setStatePageAdapter() {
val fragmentAdapter = MyPagerAdapter(supportFragmentManager)
viewPager.adapter = fragmentAdapter
tabLayout.setupWithViewPager(viewPager)
}
Мой PageAdapterClass:
class MyPagerAdapter(fm: FragmentManager): FragmentPagerAdapter(fm) {
override fun getItem(position: Int): Fragment {
return when (position) {
0 -> {
ListFilmFragment()
}
else -> {
return TVShowsFragmentList()
}
}
}
override fun getCount(): Int {
return 2
}
override fun getPageTitle(position: Int): CharSequence {
return when (position) {
0 -> "Películas"
else -> {
return "Series"
}
}
}
}
и макеты:
Основная деятельность:
<android.support.design.widget.CoordinatorLayout
android:id="@+id/main_container"
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">
<android.support.design.widget.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?actionBarSize"
app:tabGravity="fill"
app:tabIndicatorHeight="4dp"
app:tabBackground="@color/black"
app:tabMode="fixed"
app:tabTextColor="@color/white"
app:layout_scrollFlags="scroll|enterAlways">
</android.support.design.widget.TabLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_height="match_parent"
android:layout_width="match_parent">
</android.support.v4.view.ViewPager>
Наблюдение: с FrameLayout вместо Coordinator тоже не сработало.
Результат, который я получаю, следующий:
FragmentDetails перекрывает filmListFragment, и оба из них отображаются одновременно. Но должны отображаться только фрагменты деталей.