2011-12-16 10 views
35

Ho impostato la vista del contenuto in FragmentActivity e l'attività creerà per me l'istanza del frammento in base al nome della classe specificato nel file di layout. Ma come posso ottenere quell'istanza di frammento?Come ottenere l'istanza del frammento da FragmentActivity?

public class MyActivity extends FragmentActivity { 

    @Override 
    protected void onCreate(Bundle extra) { 
     super.onCreate(extra); 
     setContentView(R.layout.page_fragment); 
    } 
} 

<?xml version="1.0" encoding="utf-8"?> 
<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/pageview" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:name="org.xi.android.PageFragment" /> 

risposta

86

È possibile utilizzare l'uso findFragmentById in FragmentManager.

Dal momento che si sta utilizzando la libreria di supporto (si sta estendendo FragmentActivity) è possibile utilizzare:

getSupportFragmentManager().findFragmentById(R.id.pageview) 

Se non si utilizza la libreria di supporto (in modo che siano su Honeycomb + e non si desidera utilizzare la libreria di supporto):

getFragmentManager().findFragmentById(R.id.pageview) 

Si prega di considerare che l'utilizzo della libreria di supporto è consigliato anche su Honeycomb +.

+0

Si prega di consultare la mia domanda correlata: http://stackoverflow.com/questions/24833912/refresh-fragment-ui-from-fragmentactivity –

+0

non funzionerà se nel backstack sono presenti più istanze del frammento di frame. – datayeah

33

Per ottenere l'istanza frammento in una classe che estende FragmentActivity:

MyclassFragment instanceFragment= 
    (MyclassFragment)getSupportFragmentManager().findFragmentById(R.id.idFragment); 

Per ottenere l'istanza frammento in una classe che estende Frammento:

MyclassFragment instanceFragment = 
    (MyclassFragment)getFragmentManager().findFragmentById(R.id.idFragment); 
+3

è la risposta giusta. L'altra risposta (convalidata) non funziona nel caso di frammenti che utilizzano la libreria di supporto v4, come utilizzata nella domanda (FragmentActivity presente solo nella libreria di supporto) –

Problemi correlati