5

FragmentTabhost で現在表示されているフラグメントである Fragment へのポインタを取得できません。

次のようなメソッドからタブホストをロードする呼び出しがありますSherlockFragmentActivitySecondActivityonCreate

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

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

TabsFragmentタブを作成するためのこのメソッドを持つSherlockFragmentサブクラスですonCreate

@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;

    }

2番目のタブにいるとき、元のアクティビティによって開始されたクラスでバックグラウンドタスクが実行されSecondActivity、タブへの参照を提供するはずのこれを呼び出しますが、常にnullを返します!

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

このdelegate変数は、SecondActivityバックグラウンド クラスを開始するときのポインタです。

タブのフラグメントへのポインタを取得するにはどうすればよいですか? タブを追加するときに設定された「Tab2」Tagがフラグメント用であることは間違っていますか?

4

1 に答える 1

20

私は自分の質問に答えるのがあまり好きではありませんが、その上で寝ることで何ができるかは驚くべきことです. このモンスターは、タブホストのフラグメントへのポインターを提供します

NewsFragment newsView = (NewsFragment) delegate
                        .getSupportFragmentManager()
                        .findFragmentByTag("tabsfragment")
                        .getChildFragmentManager()
                        .findFragmentByTag("Tab2");
于 2013-05-18T09:51:09.653 に答える