findFragmentByTag - looking for fragment in FragmentTabHost - always null

纵然是瞬间 提交于 2019-12-07 07:20:48

问题


I'm having trouble getting a pointer to a Fragment which is the currently visible fragment in a FragmentTabhost.

I have a SherlockFragmentActivity called SecondActivity that loads the Tabhost from it's onCreate method like this:

if (getSupportFragmentManager().findFragmentById(android.R.id.content) == null) {
    Fragment f = new TabsFragment();

    getSupportFragmentManager().beginTransaction().add(android.R.id.content, f, "tabsfragment").commit();
}

TabsFragment is a SherlockFragment subclass with this onCreate method to create the tabs

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        mTabHost = new FragmentTabHost(getActivity());
        mTabHost.setup(getActivity(), getChildFragmentManager(), R.layout.tabs);

        mTabHost.addTab(mTabHost.newTabSpec("Tab1").setIndicator("Offers",
                getResources().getDrawable(R.drawable.offersale)),
                OfferListFragment.class,
                null);

        mTabHost.addTab(mTabHost.newTabSpec("Tab2").setIndicator("News",
                getResources().getDrawable(R.drawable.newspaper)),
                NewsFragment.class,
                null);

        return mTabHost;

    }

Now when i'm in the 2nd tab, I have a background task done in a class that is initiated by the original activity SecondActivity, then I call this which is supposed to give me a reference to the tab, but it always returns null!

NewsFragment newsView = (NewsFragment) delegate.getSupportFragmentManager().findFragmentByTag("Tab2");

The delegate variable is a pointer back to SecondActivity when it starts the background class.

How do I get a pointer to the tab's fragment? Am I wrong that "Tab2" set when adding the tabs is the Tag for the fragment?


回答1:


I don't really like answering my own questions, but it's amazing what sleeping on it can do. This monster gives me a pointer to the fragment in the tabhost

NewsFragment newsView = (NewsFragment) delegate
                        .getSupportFragmentManager()
                        .findFragmentByTag("tabsfragment")
                        .getChildFragmentManager()
                        .findFragmentByTag("Tab2");


来源:https://stackoverflow.com/questions/16616495/findfragmentbytag-looking-for-fragment-in-fragmenttabhost-always-null

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!