2013-05-15 15 views
7

In meinem Android App vorbei, ich den folgenden Code verwenden Registerkarten zu erstellen:Android: Parameter auf eine Registerkarte

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

Im addTab Verfahren wird der dritte Parameter ist ein Objekt Bundle und ist null. Könnte ich diesen dritten Parameter verwenden, um Parameter an mein Fragment zu übergeben?

Die Android-API-Dokumentation ist für addTab leer und dokumentiert diesen Parameter nicht.

Antwort

11

Die Antwort ist ja. Die Parameter, die Sie in diesem Bundle übergeben werden später als Ihr Fragment arguments festgelegt und können mit getArguments aus dem Inneren des Fragments zugegriffen werden.

Der Code, der es in der FragmentTabHost geschehen macht, ist:

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

Arbeiten, danke! –

+0

@Sean: Was für ein Objekt ist newTab? Ich kann die Fragmenteigenschaft nicht aus dem FragmentTabHost abrufen. – dannyroa

+0

@dannyroa Hoffe ich verstand deine Frage richtig. Zunächst sollten Sie wissen, dass Sie immer auf Ihre Fragmente über den gleichen TAG zugreifen können, den Sie mit einem einfachen 'getSupportFragmentManager() in den Tab-Host initiiert haben. FindFragmentByTag (TAG_OF_FRAGMENT)'. Wenn Sie wissen möchten, welches aktuelle Fragment auf dem Tab-Host angezeigt wird, verwenden Sie http://developer.android.com/reference/android/widget/TabHost.html#getCurrentTabTag(), um den TAG abzurufen, und dann können Sie darauf zugreifen das Fragment wie oben erwähnt. P.S. Das "newTab" ist ein inneres Mitglied von FragmentTabHost. – Sean

1

am FragmentTabHost.java Sehen, sieht aus wie es dieses Bündel an die TABINFO geht, die inturn die fragment.So hat die Antwort ja !

Verwandte Themen