2015-07-31 11 views
17

Ich habe einige Fragment in eine TableLayout und ich möchte, dass sie von meinem Container diese Activity, so habe ich verwalten:Wie bekomme ich Fragment von View?

Fragment fragment = (Fragment) tableLayout.getChildAt(i); 

aber getChildAt(int) zurück warf einen View und ein View konnte nicht an Fragment

+0

Wie fügen Sie das Fragment hinzu? Durch XML Tags oder mit einem FragmentManager in Java? – Nachi

+0

Ich habe sie mit dem FragmentManager hinzugefügt – Mohammad7G

Antwort

25

Ich verstehe nicht, warum Menschen Ihre Frage abstimmen. Fragments kann manchmal sehr verwirrend sein, besonders für Anfänger. Um Ihr Problem zu verstehen, müssen Sie lernen, was ein ist und wie sie verwendet werden.

Zunächst einmal ist eine View etwas, das auf dem Bildschirm existiert. Beispiele sind: TextView, EditText, Button usw. Sie werden in XML "Layouts" platziert. Diese Layouts werden unter Verwendung einer Activity angezeigt.

Nun ist kein View. Es existiert überhaupt keine Existenz auf dem Bildschirm. Stattdessen ist es eine Klasse, die einfach ein "Layout" verwaltet - ähnlich wie ein Activity. Wenn Sie die von Ihrem Fragment zurückgegebene Ansicht onCreateView() benötigen, können Sie direkt findViewById() innerhalb Ihrer Activity verwenden.

Wenn Sie einen Verweis auf Ihr Fragment benötigen, gibt es zwei Möglichkeiten, dies zu tun:

1) Wenn Sie das Fragment programmatisch wie diese

getFragmentManager() 
    .beginTransaction() 
    .replace(R.id.fragment_container_viewgroup, myFragment, FRAGMENT_TAG) 
    .commit(); 

hinzugefügt wurden, können Sie verwenden:

MyFragment myFragment = (MyFragment) getFragmentManager().findFragmentByTag(FRAGMENT_TAG); 

2) Wenn Sie das Fragment in einem XML-Layout wie folgt hinzugefügt:

<fragment android:name="com.example.android.fragments.HeadlinesFragment" 
    android:id="@+id/fragmentContainer" 
    android:layout_weight="1" 
    android:layout_width="0dp" 
    android:layout_height="match_parent" /> 

Sie können diese verwenden:

getFragmentManager().findFragmentById(R.id.fragmentContainer); 

Grundsätzlich jede Aktivität hat eine FragmentManager Klasse, die all aktiven Fragments unterhält, und es gibt zwei Möglichkeiten, sie zu finden: einen einzigartigen TAG, die Sie passieren, während eine zeigen Fragment, oder übergeben Sie die Containeransicht-ID, wo das Fragment hinzugefügt wurde.

2

Sie kann ein Fragment wie dieses nicht bekommen. Sie müssen ein Fragment mit einem Tag hinzufügen und es mit diesem Tag abrufen.

ein Fragment fügen Sie folgendes:

getFragmentManager().beginTransaction().add(R.id.container, fragment, "tagTofindFragment"); 

Fragment zu erhalten:

fragment = getFragmentManager().findFragmentByTag("tagTofindFragment"); 

Hier tagTofindFragment ist, dass Tag, das unter Ihren Fragmente eindeutig sein sollte.

Verwandte Themen