How To Add Fragment Tag In A Fragmentpageradapter To Reference The Fragment Later?
I tried the following but it didn't help . How can I set tags or acess tags of fragments from FragmentPagerAdapter ? @Override public Fragment getItem(int position) {
Solution 1:
It seems that you are setting the tags correctly. Anyway, this way should work.
Set tag:
MyFeedFragment myFeedFragment= new MyFeedFragment();
getSupportFragmentManager().beginTransaction().add(R.id.fragmentContainer, myFeedFragment, "myfeed");
fragmentTransaction.commit();
And then you can get it by searching tag:
List fragments = getSupportFragmentManager().getFragments();
Fragment discoverFrag = null;
Fragment myFeedFragment = null;
Fragment filterFragment = null;
for (int i = 0; i < fragments.size(); i++) {
if (((Fragment) fragments.get(i)).getTag() == "discover")
discoverFrag = (Fragment) fragments.get(i);
if (((Fragment) fragments.get(i)).getTag() == "myfeed")
myFeedFragment = (Fragment) fragments.get(i);
if (((Fragment) fragments.get(i)).getTag() == "filter")
filterFragment = (Fragment) fragments.get(i);
}
Solution 2:
Use this this class as your adapter
classSwipeAdapterextendsFragmentPagerAdapter {
private Map<Integer, String> mFragmentTags;
private FragmentManager mFragmentManager;
private String mPagetile[];
publicSwipeAdapter(FragmentManager fm, Context context) {
super(fm);
mPagetile = context.getResources().getStringArray(R.array.pageTitle);
mFragmentManager = fm;
mFragmentTags = newHashMap<>();
}
@Overridepublic Fragment getItem(int position) {
switch (position) {
case0:
returnnew"Your_fragment";
default:
break;
}
returnnull;
}
@Overridepublic Object instantiateItem(ViewGroup container, int position) {
Objectobj=super.instantiateItem(container, position);
if (obj instanceof Fragment) {
Fragmentf= (Fragment) obj;
Stringtag= f.getTag();
mFragmentTags.put(position, tag);
}
return obj;
}
public Fragment getFragment(int position) {
Stringtag= mFragmentTags.get(position);
if (tag == null)
returnnull;
return mFragmentManager.findFragmentByTag(tag);
}
@Overridepublic CharSequence getPageTitle(int position) {
return mPagetile[position];
}
@OverridepublicintgetCount() {
return"Number of fragments";
}
}
Now with the instance of SwipeAdapter call getFrament(int "position of fragment"); Hope you get it.
Solution 3:
To retrieve a fragment used in your FragmentPagerAdapter, you can do this anywhere (Kotlin) :
for (fragment in supportFragmentManager.fragments) {
if (fragment is YourFragment) {
val yourFragment = fragment as YourFragment
}
}
Post a Comment for "How To Add Fragment Tag In A Fragmentpageradapter To Reference The Fragment Later?"