2013-06-04 4 views
9

Ho un layout relativo e sto aggiungendo il frammento in tale layout relativo. Ti piace questaTrova frammento per nome tag nel contenitore

 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(); 

ho anche una vista testo in cui devo visualizzare il nome del frammento ho aggiunto nel layout relativo. Come ricerca nel caso. Come ottenere il nome del frammento aggiunto nel mio layout relativa supporre con id = R.id.order_container

+0

Cosa intendi per "nome" del frammento? –

+0

nel codice precedente ho aggiunto una stringa di ricerca, come tag in frammento. Voglio recuperare quel nome. – Bora

risposta

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

Volete il nome ?? Puoi ottenere il tuo frammento usando l'ID e facendo:

fragment.getClass().getName(); 

è quello che vuoi? Oppure si può utilizzare:

fragment.getTag(); 

è restituisce il nome del tag del frammento, se specificato.

3

Se si desidera ottenere il tag di un frammento è possibile utilizzare il metodo getTag(). Questo probabilmente non sarà il modo migliore per ottenere ciò che stai cercando di fare.

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

Se si dispone di diversi frammenti e li cambiare intorno, considerare l'utilizzo di un adattatore.

+0

cosa succede se non ci sono frammenti nel contenitore, come controllare quel passo – Bora

+0

Puoi usare findFragmentById per ottenere questo, vedi risposta da @JoaoBiriba restituirà null se non ci sono frammenti. – Philio

+0

sto aggiungendo framgents dinamicamente che cosa dovrei dare? – Bora

29

è possibile recuperare un frammento per tag attraverso

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

allora potete controllare se il vostro frammento è instace di HomeFragment

if (fragment instanceof HomeFragment) { 
} 
+1

con 'o' :) minuscolo - "instanceof" – keybee

+0

@keybee grazie – Blackbelt

+0

+1. Ma voglio sapere come possiamo usarlo in frammenti annidati con TabLayout. So che è una domanda stupida, ma ho bisogno di sapere. –

3

È possibile utilizzare findFragmentById in FragmentManager

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

Prova a fornire ulteriori dettagli nella risposta –