5

Ich habe Probleme, einen Zeiger auf ein Fragment zu bekommen, welches das aktuell sichtbare Fragment in einem FragmentTabhost ist.findFragmentByTag - Suche nach Fragment in FragmentTabHost - immer null

Ich habe eine SherlockFragmentActivitySecondActivity genannt, die die TabHost aus es onCreate Methode wie folgt laden:

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

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

TabsFragment ist eine SherlockFragment Unterklasse mit dieser onCreate Methode, um den 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; 

    } 

Jetzt zu erstellen, wenn Ich bin in der 2. Registerkarte, habe ich eine Hintergrundaufgabe in einer Klasse, die von der ursprünglichen Aktivität SecondActivity initiiert wird, dann rufe ich das, was s ist Ich habe einen Hinweis auf die Registerkarte, aber es gibt immer null zurück!

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

Die delegate Variable ist ein Zeiger zurück auf SecondActivity, wenn sie die Hintergrundklasse beginnt.

Wie bekomme ich einen Zeiger auf das Fragment der Registerkarte? Falsche ich, dass "Tab2" beim Hinzufügen der Registerkarten ist Tag für das Fragment?

Antwort

19

Ich mag es nicht wirklich, meine eigenen Fragen zu beantworten, aber es ist erstaunlich, was ich darauf schlafen kann. Dieses Monster gibt mir einen Zeiger auf das Fragment in der TabHost

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

Große Antwort .. Sie meine Zeit spart .. Vielen Dank für Sie ... :) – Gunaseelan

+0

hervorragende Antwort ..... –