Итак, я создал приложение, которое содержит BottomNavView с 4 различными фрагментами и 4 различными макетами.(Домой, Список книг, Недавние и Загрузки)
Теперь я хочу поместить 3 вкладки внутри первого фрагмента (который является домашним фрагментом).Я нашел много учебных пособий о том, как реализовать вкладки внутри AppCompatActivity, но я хочу поместить их в HomeFragment.
Код: В настоящее время у меня есть свой BottomNavView в activity_main.xml и4 фрагмента (Главная, Список книг, Последние, Загрузки).Затем я сделал 3 фрагмента для вкладок (ForYou, All, New).
Вот ссылка GitHub для всех файлов: https://github.com/Oribakun/tabs-inside-fragment-test
Это мой фрагмент_home.xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
>
<android.support.design.widget.TabLayout
android:id="@+id/tabs_home"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
app:tabTextColor="#fff"
app:tabBackground="?attr/selectableItemBackground"
app:tabGravity="fill"
app:tabSelectedTextColor="@android:color/white"
app:tabMode="fixed"
/>
<android.support.v4.view.ViewPager
android:id="@+id/view_pager_home"
android:layout_width="match_parent"
android:layout_height="0dp"
/>
</android.support.design.widget.CoordinatorLayout>
А вот так выглядит мой HomeFragment: я думал, что это сработает, но я получаю сообщение об ошибке «Val нельзя переназначить» при наведении указателей firstViewPager и tabLayout в строках 46 и 48.
package fragment
import android.os.Bundle
import android.support.v4.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.mangami.mangami.*
import android.support.design.widget.TabLayout
import android.support.v4.view.ViewPager
class HomeFragment : Fragment() {
private val tabLayout: TabLayout? = null
private val firstViewPager: ViewPager? = null
/**
* Initialize newInstance for passing parameters
*/
companion object {
fun newInstance(): HomeFragment {
val fragmentHome = HomeFragment()
val args = Bundle()
fragmentHome.arguments = args
return fragmentHome
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val rootView = inflater.inflate(R.layout.fragment_home, container, false)
firstViewPager = rootView.findViewById(R.id.view_pager_home)
tabLayout = rootView.findViewById(R.id.tabs_home)
tabLayout.setupWithViewPager(firstViewPager)
setupViewPager(firstViewPager)
return rootView
}
private fun setupViewPager(viewPager: ViewPager) {
val adapter = HomeFragmentTabAdapter(childFragmentManager)
adapter.addFragment(HomeFragmentForYou(), "For You")
adapter.addFragment(HomeFragmentAll(), "All")
adapter.addFragment(HomeFragmentNew(), "New")
viewPager.adapter = adapter
}
}
Мой вопрос теперь таков: как я могу поместить вкладки во фрагмент?
Кстати, я использую Kotlin для всего.
Я ищу способ сделать это дляпару дней сейчас.Я уверен, что есть простое решение, я просто не могу найти его, поэтому я рассчитываю на вас!