Reputation: 591
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
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