Обрабатывать фрагмент, заменяющий событие - PullRequest
0 голосов
/ 30 ноября 2018

Я думаю, что моя проблема проста, но я не могу найти решение, у меня есть 3 фрагмента, и мне нужно выполнить метод, когда первый фрагмент заменен вторым фрагментом, потому что в первом фрагменте есть медиаплеер, и я долженотпустите или остановите его, когда пользователь перейдет ко второму фрагменту

Я пробовал методы onPause и onStop в первом фрагменте, но onPause вызывался только при переходе к третьему фрагменту. Я не знаю, почему контейнерная активность считает, что первыми второй аромат одинаковы. Это мой код активности:

class MainActivity : AppCompatActivity() {


override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.main_activity)
    setupViewPager()
    tabs.setupWithViewPager(viewPager)
    setupTabIcons()
}

private fun setupTabIcons() {

    val tabOne = LayoutInflater.from(this).inflate(R.layout.custom_tab, null) as TextView
    tabOne.text = "ONE"
    tabOne.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.ic_home_black_24dp, 0, 0)
    tabs.getTabAt(0)!!.customView = tabOne

    val tabTwo = LayoutInflater.from(this).inflate(R.layout.custom_tab, null) as TextView
    tabTwo.text = "TWO"
    tabTwo.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.ic_dashboard_black_24dp, 0, 0)
    tabs.getTabAt(1)!!.customView = tabTwo

    val tabThree = LayoutInflater.from(this).inflate(R.layout.custom_tab, null) as TextView
    tabThree.text = "THREE"
    tabThree.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.ic_notifications_black_24dp, 0, 0)
    tabs.getTabAt(2)!!.customView = tabThree
}

private fun setupViewPager() {
    val adapter = ViewPagerAdapter(supportFragmentManager)
    adapter.addFragment(SongsFragment.newInstance(), "ONE")
    adapter.addFragment(VediosFragment.newInstance(), "TWO")
    adapter.addFragment(InfosFragment.newInstance(), "THREE")
    viewPager.adapter = adapter
}}

1 Ответ

0 голосов
/ 30 ноября 2018

FragmentManager.OnBackStackChangedListener может помочь.

Реализация FragmentManager.OnBackStackChangedListener в действии и в методе onBackStackChanged получить текущий фрагмент и проверить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...