2013-05-15 23 views
7

moim Androida użyć następujące jest tworzenie zakładki:ANDROID przekazywania parametrów do karty

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

W sposobie addTab trzeci parametr obiektu Bundle i null. Czy mogę użyć tego trzeciego parametru do przekazania parametrów do mojego fragmentu?

Dokumentacja interfejsu API Androida jest pusta dla addTab i nie dokumentuje tego parametru.

Odpowiedz

11

Odpowiedź brzmi: tak. parametry, które przekazujesz w tym Bundle, są później ustawiane jako twój fragment arguments i są dostępne z getArguments z wnętrza fragmentu.

Kod, który sprawia, że ​​to się stało w FragmentTabHost jest:

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

Praca, dzięki! –

+0

@Sean: Jakiego rodzaju obiektem jest newTab? Nie mogę pobrać własności fragmentu z FragmentTabHost. – dannyroa

+0

@dannyroa Hope Zrozumiałam twoje pytanie. Po pierwsze, powinieneś wiedzieć, że zawsze możesz uzyskać dostęp do swoich fragmentów poprzez ten sam TAG, który zainicjowałeś na hoście tabulacji, za pomocą prostego 'getSupportFragmentManager(). FindFragmentByTag (TAG_OF_FRAGMENT)'. Jeśli chcesz wiedzieć, jaki jest bieżący fragment wyświetlany na zakładce host, użyj http://developer.android.com/reference/android/widget/TabHost.html#getCurrentTabTag(), aby pobrać TAG, a następnie możesz uzyskać dostęp fragment jak wspomniano powyżej. P.S. "newTab" jest wewnętrznym członkiem FragmentTabHost. – Sean

1

Patrząc na FragmentTabHost.java, wygląda jak przechodzi ten pakiet do tabinfo, który inturn ma fragment.So odpowiedź brzmi: tak !