5

Ho problemi a ottenere un puntatore a un frammento che è il frammento attualmente visibile in un FragmentTabhost.findFragmentByTag - cerca frammento in FragmentTabHost - sempre null

Ho un SherlockFragmentActivity chiamato SecondActivity che carica il Tabhost da esso è onCreate metodo come questo:

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

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

TabsFragment è una sottoclasse SherlockFragment con questo metodo onCreate per creare le linguette

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

    } 

Ora, quando Sono nella seconda scheda, ho un compito in background fatto in una classe che è iniziata dall'attività originale SecondActivity, quindi chiamo questo che è s alzato per darmi un riferimento alla scheda, ma restituisce sempre null!

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

La variabile delegate è un puntatore di nuovo a SecondActivity quando inizia la classe di sfondo.

Come si ottiene un puntatore al frammento della scheda? Ho sbagliato che "Tab2" impostato quando si aggiungono le schede è lo Tag per il frammento?

risposta

19

Non mi piace molto rispondere alle mie domande, ma è incredibile cosa può fare dormire su di esso. Questo mostro mi dà un puntatore al frammento in tabhost

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

Grande risposta .. Si salva il mio tempo .. Un grande grazie per voi ... :) – Gunaseelan

+0

risposta superba ..... –

Problemi correlati