5

Mam problem z uzyskaniem wskaźnika do Fragmentu, który jest obecnie widocznym fragmentem w FragmentTabhost.findFragmentByTag - szukanie fragmentu w FragmentTabHost - zawsze zerowy

mam SherlockFragmentActivity nazywa SecondActivity ładujący Tabhost od niego znajduje onCreate metoda tak:

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

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

TabsFragment jest SherlockFragment podklasy z tej metody onCreate do tworzenia zakładek

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

    } 

Teraz kiedy Jestem na drugiej karcie, mam zadanie tła wykonane w klasie, która jest inicjowana przez oryginalną aktywność SecondActivity, a następnie nazywam to, co jest s w celu podania odniesienia do karty, ale zawsze zwraca wartość null!

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

Zmienna delegate jest wskaźnik z powrotem do SecondActivity kiedy zaczyna klasę tła.

Jak uzyskać wskaźnik do fragmentu karty? Czy mam rację, że "Tab2" ustawione podczas dodawania kart to Tag dla fragmentu?

Odpowiedz

19

Ja naprawdę nie lubię odpowiadać na moje własne pytania, ale to niesamowite, co może zdziałać. Ten potwór daje mi wskaźnik do fragmentu w tabhost

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

Świetna odpowiedź .. Ty oszczędza mój czas .. Wielkie dzięki dla Ciebie ... :) – Gunaseelan

+0

doskonałą odpowiedź ..... –