处理片段替换事件

时间:2018-11-30 16:40:41

标签: android android-fragments

我认为我的问题很容易,但是我找不到解决方案 我有3个片段,当第一个片段替换为第二个片段时,我需要执行方法,因为在第一个片段中有媒体播放器,当用户移至第二个片段时,我必须释放或停止它

我在第一个片段中尝试过onPause和onStop方法,但是仅当我移至第三个片段时才调用onPause,我不知道为什么Container Activity认为第一和第二个片段相同这是我的活动代码:

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 :(得分:-1)

FragmentManager.OnBackStackChangedListener可能会有帮助。

在活动中和在onBackStackChanged方法中实施FragmentManager.OnBackStackChangedListener获取当前片段并进行检查。