2013-05-15 21 views
7

Nella mia app Android, io uso il seguente codice per creare schede:Android: passaggio di parametri a una scheda

mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost); 
mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent); 
mTabHost.addTab(mTabHost.newTabSpec("simple").setIndicator("Simple"), 
      MyFragment.class, null); 

Nel metodo addTab, il terzo parametro è un oggetto Bundle ed è null. Potrei usare questo terzo parametro per passare i parametri al mio frammento?

La documentazione dell'API di Android è vuota per addTab e non documenta questo parametro.

risposta

11

La risposta è sì. i parametri che stai passando in questo Bundle vengono successivamente impostati come frammento arguments e sono accessibili con getArguments all'interno del frammento.

Il codice che fa accadere nella FragmentTabHost è:

newTab.fragment = Fragment.instantiate(mContext, 
         newTab.clss.getName(), newTab.args); 
+0

Funzionante, grazie! –

+0

@Sean: Che tipo di oggetto è newTab? Non riesco a ottenere la proprietà fragment dal FragmentTabHost. – dannyroa

+0

@dannyroa Spero di aver capito bene la tua domanda. Innanzitutto, dovresti sapere che puoi sempre accedere ai tuoi frammenti tramite lo stesso TAG che li hai avviati nell'host di schede, con un semplice 'getSupportFragmentManager(). FindFragmentByTag (TAG_OF_FRAGMENT)'. Se desideri sapere qual è il frammento corrente visualizzato nell'host di schede, utilizza http://developer.android.com/reference/android/widget/TabHost.html#getCurrentTabTag() per scaricare il TAG e quindi puoi accedere il frammento come menzionato sopra. P.S. il "newTab" è un membro interno di FragmentTabHost. – Sean

1

Guardando il FragmentTabHost.java, sembra che passa questo pacchetto al TABINFO, che ha inturn il fragment.So la risposta è sì !

Problemi correlati