5

FragmentTabhostに現在表示されているフラグメントであるFragmentへのポインタを取得できません。私はそれからTabhostをロードSecondActivity呼ばSherlockFragmentActivityは、このようなonCreate方法だ持ってfindFragmentByTag - FragmentTabHostのフラグメントを探しています - 常にヌルです

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

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

TabsFragmentは今

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

    } 

とき、タブを作成するには、このonCreate方法とSherlockFragmentサブクラスであります私は2番目のタブにあります。私は元のアクティビティSecondActivityによって開始されたクラスで行われたバックグラウンドタスクを持っています。私はタブへの参照を与えるために反対に、しかし、それは常にnullを返します!それがバックグラウンドクラスを開始したときに

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

delegate変数は、バックSecondActivityへのポインタです。

タブのフラグメントへのポインタを取得するにはどうすればよいですか? タブを追加するときに "Tab2"が設定されているのは、フラグメントのTagですか?

答えて

19

私は本当に自分の質問に答えるのが好きではありませんが、寝るのはすばらしいことです。 この怪物は... ..あなたは私の時間を節約できます。..私はあなたのためのビッグ感謝をtabhost

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

グレート答えでフラグメントへのポインタを与える:) – Gunaseelan

+0

見事な答えを..... –

関連する問題