【问题标题】:Fragment in TabView issue in AndroidAndroid中TabView问题中的片段
【发布时间】:2021-12-28 17:57:28
【问题描述】:

我有两个片段的寻呼机,

class eTransactionPager(fm: FragmentManager) : FragmentStatePagerAdapter(fm) {

    override fun getCount(): Int = 2

    override fun getItem(position: Int): Fragment {
        when (position) {
            0 -> {
                return investmentFragment()
            }
            1 -> {
                return redemptionFragment()
            }
            

        }
        return investmentFragment()
    }
}

假设我从 InvestmentFragment() 调用 riskFragment() 并停留在 riskFragment() 上,然后我将 tab 更改为 redemptionFragment(),然后再次将 tab 更改为 investmentFragment(),它显示 riskFragment()。但我想在这里投资Fragment()。当我将选项卡更改为 redemptionFragment() 时,我想销毁 riskFragment()。

代码:

从 investmentFragment() 调用 riskFragment():

    val fragment2 = riskFragment()
    val fragmentManager: FragmentManager = parentFragmentManager
    val fragmentTransaction: FragmentTransaction = fragmentManager.beginTransaction()
    fragmentTransaction.replace(R.id.root_view, fragment2, null)
    fragmentTransaction.addToBackStack(null)
    fragmentTransaction.commit()

【问题讨论】:

    标签: java android kotlin fragment fragmentmanager


    【解决方案1】:

    您可以在 Investmentfragment 的 onHiddenChanged 回调中弹出/删除 riskfragment,或者您可以使用以下方法监听页面更改事件:

     viewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
                @Override
                public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
                    
                }
    
                @Override
                public void onPageSelected(int position){
                   //when 2nd fragment is selected pop/remove riskfragment
                }
            });
    

    有关文档的更多帮助:link

    【讨论】:

      猜你喜欢
      • 2015-11-23
      • 1970-01-01
      • 2021-11-12
      • 2018-09-30
      • 1970-01-01
      • 1970-01-01
      • 2016-12-25
      相关资源
      最近更新 更多