F_Z
F_Z

Reputation: 591

Fragment in TabView issue in Android

I have Pager which has two Fragments,

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()
    }
}

Suppose I call riskFragment() from investmentFragment() and stay on the riskFragment(), after that I change tab to redemptionFragment() and then change tab again to investmentFragment() and it is showing riskFragment(). But I want here investmentFragment(). I want to destroy the riskFragment() when I had changed the tab to redemptionFragment().

Code:

Calling riskFragment() from investmentFragment():

    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()

Upvotes: 0

Views: 36

Answers (1)

Vineed Gangadharan
Vineed Gangadharan

Reputation: 31

You could either pop/remove riskfragment in onHiddenChanged callback of investmentfragment, or you could listen for page change event using:

 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
            }
        });

More help on doc: link

Upvotes: 1

Related Questions