I have almost the exact same problem as this question here: Android, How to restart/refresh a fragment from FragmentActivty?
I'm trying to call the a method of a ListFragment
from the parent FragmentActivity
.
However, I'm using the template Swipe + Fixed Tabs generated by eclipse. I tried calling getSupportFragmentManager().findFragmentById(R.id.myfragment)
but the return value is always null. I'm guessing this might be a problem because I did not define myfragment
anywhere in my app. But I am unsure where to define it as all fragments are created dynamically.
For those who are not familiar with the Swipe + Fixed Tabs template generated by the Android SDK in Eclipse, the fragments are created by overriding the FragmentPagerAdapter
getItem
function, returning a new instance of my fragment.
Any help would be appreciated.
Relevant code: How I setup my adapter:
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
// Set up the ViewPager with the sections adapter.
mViewPager = (ViewPager) findViewById(R.id.activity_comment);
mViewPager.setAdapter(mSectionsPagerAdapter);
Overriding the adapter getItem function:
@Override
public Fragment getItem(int position) {
// getItem is called to instantiate the fragment for the given page.
// Return a DummySectionFragment (defined as a static inner class
// below) with the page number as its lone argument.
switch(position) {
case 0:
return CommentsFragment.newInstance();
case 1:
default:
return LikesFragment.newInstance();
}
}
The newInstance() functions simply return an instance of themselves, since the classes for my fragment are static.
You can find your fragment by the Tag, but of course you need to give this tag to it while adding the fragment.
First add your fragment with a tag:
fragmentManager = getFragmentManager();
fragmentTransaction = fragmentManager.beginTransaction();
SomeFragment fragment = new ManageLinksFragment();
fragmentTransaction.add(R.id.fragment_container1,fragment, "sometag");
fragmentTransaction.commit();
And then on the Activity's site:
SomeFragment mSomeFragment = (SomeFragment) getFragmentManager().findFragmentByTag("sometag");
// now mSomeFragment.callsomething();