2013-06-04 12 views
9

Mam układ względny i dodaję fragment w tym układzie względnym. Ci się toZnajdź fragment według nazwy znacznika w kontenerze

 HomeFragment mHomeFragment = new HomeFragment(); 
    FragmentManager fragmentManager = getFragmentManager(); 
    FragmentTransaction fragmentTransaction =fragmentManager.beginTransaction(); 

    if(mHomeFragment!=null&& mHomeFragment.isAdded()){ 

     fragmentTransaction.show(mHomeFragment); 

    }else { 

     fragmentTransaction.add(R.id.order_container,mHomeFragment,"Search"); 


    } 
    fragmentTransaction.commit(); 

Mam również widok tekstowy gdzie mam do wyświetlania nazwy fragmentu dodałem we względnym układzie. Podobnie jak w przypadku wyszukiwania. Jak uzyskać nazwę fragmentu dodaną w moim układzie względnym przypuszczać z id = R.id.order_container

+0

Co masz na myśli przez "nazwę" fragmentu? –

+0

w powyższym kodzie dodałem ciąg wyszukiwania, jako znacznik w fragmencie. chcę odzyskać to imię. – Bora

Odpowiedz

2
Fragment fragment = getFragmentManager().findFragmentById(R.id.order_container); 
String tag = (String) fragment.getTag(); 
2

Chcesz nazwę ?? Możesz pobrać swój fragment za pomocą identyfikatora i wykonać:

fragment.getClass().getName(); 

czy tego chcesz? Albo można użyć:

fragment.getTag(); 

to zwraca nazwę znacznika fragmentu, jeżeli został on określony.

3

Jeśli chcesz uzyskać znacznik fragmentu, możesz użyć metody getTag(). To prawdopodobnie nie będzie najmilszym sposobem na osiągnięcie tego, co chcesz zrobić.

http://developer.android.com/reference/android/app/Fragment.html#getTag()

Jeśli masz kilka fragmentów i będzie je zmienić się, należy rozważyć użycie adaptera.

+0

co jeśli nie ma fragmentu w pojemniku, jak sprawdzić ten krok – Bora

+0

Możesz użyć findFragmentById, aby to osiągnąć, patrz odpowiedź @JoaoBiriba zwróci wartość null, jeśli nie ma fragmentu. – Philio

+0

Dodaję framgents dynamicznie jaki identyfikator powinienem podać? – Bora

29

można pobrać fragment po tagu poprzez

Fragment fragment = getFragmentManager().findFragmentByTag("yourstringtag"); 

następnie można sprawdzić, czy fragment jest instace od HomeFragment

if (fragment instanceof HomeFragment) { 
} 
+1

z małymi literami "o" :) - "instanceof" – keybee

+0

@keybee dziękuję – Blackbelt

+0

+1. Ale chcę wiedzieć, jak możemy go użyć w zagnieżdżonych fragmentach z TabLayout. Znam to głupie pytanie, ale muszę wiedzieć. –

3

Można użyć findFragmentById w FragmentManager

getFragmentManager().findFragmentById(R.id.order_container) 
0
getSupportFragmentManager().findFragmentById(R.id.container).getClass().getName(); 
+2

Spróbuj podać więcej szczegółów w swojej odpowiedzi –