# ViewPager, Fragments, Tabs
В разметку окна добавляем **ViewPager**
```xml
```
Создаем разметку и класс фрагмента (`fragment_main.xml`):
```xml
```
```kt
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
class MainFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
return inflater!!.inflate(R.layout.fragment_main, container, false)
}
}
```
Добавляем аналогично ещё пару фрагментов
В классе главной activity создаём адаптер и привязываем его к ViewPager:
```kt
val fragmentAdapter = MyPageAdapter(supportFragmentManager)
val viewpager = findViewById(R.id.pager)
viewpager.adapter = fragmentAdapter
```
Реализуем **MyPageAdapter** (пример на две страницы)
```kt
package ru.yotc.tabbed
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentPagerAdapter
class MyPageAdapter (fm: FragmentManager) : FragmentPagerAdapter(fm) {
override fun getItem(position: Int): Fragment {
return when (position) {
0 -> {
MainFragment()
}
else -> SecondFragment()
}
}
override fun getCount(): Int {
return 2
}
override fun getPageTitle(position: Int): CharSequence {
return when (position) {
0 -> "First Tab"
else -> "Second Tab"
}
}
}
```
Для отображения названия текущей страницы нужно добавить над **ViewPager** элемент **TabLayout**
```xml
```
и в классе activity привязать его к ранее созданному **viewpager**
```kt
val tabs = findViewById(R.id.tabLayout)
tabs.setupWithViewPager(viewpager)
```
Надо монимать, что у фрагментов свой жизненный цикл и всю логику надо переносить в класс соответсвующего фрагмента.