In order to reuse some fragments in my app, I need to know which Fragment is the second on the back stack.
In order to do that I'm using getFragmentManager().getFragments()
, which shows the following error (but works!)
FragmentManager.getFragments can only be called from within the same library group (groupId=com.android.support)
Is it safe to use? Could I get the same result by another approach?
Here is the code:
public Fragment getCallerFragment(){
List<Fragment> fragments = getFragmentManager().getFragments();
return fragments.get(fragments.size()-2);
}
If we put both answers together, you can add TAG's to your fragments and get the previous Fragment name with this method:
private String getCallerFragment(){
FragmentManager fm = getFragmentManager();
int count = getFragmentManager().getBackStackEntryCount();
return fm.getBackStackEntryAt(count - 2).getName();
}
Use this method to get the number of counts in backStack
getBackStackEntryCount()
use this method to get the fragments
getBackStackEntryAt (int index)
you can also do something like
FragmentManager fm = getFragmentManager();
for(int entry = 0; entry < fm.getBackStackEntryCount(); entry++){
Log.i(TAG, "Found fragment: " + fm.getBackStackEntryAt(entry).getId());
}
You can also put tag's / id's to fragments and get them by id
val fragment = supportFragmentManager.findFragmentByTag(tag)
else Nouman Ch solution will work for you.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With