2017-10-03 2 views
-2

https://www.journaldev.com/9266/android-fragment-lifecycle#comment-39628Fragmente App-Entwicklung

iam nach dem obigen Link Fragmente in meiner android app aber iam in diesem Fragment geschlagen zu entwickeln, wenn dieser Fehler die App fein arbeiten behoben ist können Sie mir machen, wo ich schief gelaufen

enter image description here

enter image description here

hinzugefügt 2. Bild jedem klar, dass iam mit Blick auf Fehler zu machen, wenn iu se getSupportFragmentManager()

Kontrolle zu diesen Screenshot aus

enter image description here

+0

ist fragment2 die ID Ihres Containers? –

+0

"Wenn dieser Fehler behoben ist, wird die App funktionieren ..." also müssen wir raten, was ist der Fehler? – TDG

+0

Was ist der Fehler? – nomag

Antwort

3

Es gibt zwei verschiedene Arten von Fragmenten:

import android.app.Fragment; 
import android.support.v4.app.Fragment; 

Sie haben die entsprechenden FragmentManager für sie zu verwenden. Entweder getFragmentManager() oder getSupportFragmentManager().

+0

perfekte Erklärung seine Arbeit –

0
Fragment fragment= getFragmentManager().findFragmentById(R.id.container);   
     if (fragment!= null && fragment instanceof TextFragment) { 
       fragment.change ....           
            } 
0

Sie verwenden Support-Bibliothek. Die Referenzklasse Ihrer TextFragment ist android.support.v4.app.fragment statt android.app.fragment.

Sie benötigen

getSupportFragmentManager().findFragmentById(id); 

Viel Glück verwenden

Emre

+0

Hey Kumpel, wenn ich getSupportFragmentManager() in diesem bestimmten android.support.v4.app.fragment –

+0

immer noch iam bekommen Fehler, es funktioniert gut, wenn Ich benutze android.app.fragment mit getFragmentManager() –

+0

Dann verwenden Sie beide Klassen in demselben Projekt. Sie sollten jedes Fragment und jede Aktivität überprüfen, um dieselbe Referenz zu erhalten. –

0

Das Problem scheint zu sein, dass Sie verwenden getFrgamentManager(), sondern als Sie können oben auf Ihren Importen sehen, dass Sie mindestens eine Support-Bibliothek verwenden, was bedeutet, dass Ihr TextFragment die Klasse android.support.v4.app.Fragment erweitern könnte.

Das bedeutet, dass Sie anstelle des regulären FragmentManagers den supportFragmentManager aufrufen müssen, damit er funktioniert.

Sie tun dies, indem:

TextFragment txt = (TextFragment) getFragmentManager().findFragmentById(R.id.fragment2); 

sein:

TextFragment txt = (TextFragment) getSupportFragmentManager().findFragmentById(R.id.fragment2); 

Wenn nur unter Verwendung von Fragmenten stellen Sie sicher, dass Ihre Importe an der Spitze sind, wie Sie sie zu erwarten. Wenn Sie android.support.v4.app.Fragment verwenden, müssen Sie den supportFragmentManager verwenden.

EDIT:

Wie Sie Ihre Änderungen, und Ihre Screenshots zeigen, können Sie nicht getSupportFragmentManager() innerhalb des ListFragment aufrufen. Das bedeutet, Sie tun müssen:

getActivity().getSupportFragmentManager() 
+0

Hey Kumpel, wenn ich getSupportFragmentManager() in diesem bestimmten android.support.v4.app.fragmen –

+0

immer noch iam immer Fehler, es funktioniert gut, wenn ich android.app.fragment mit getFragmentManager() verwenden –

+0

@KrishnaChaitu erweitert Ihre Aktivität AppCompatActivity ? Falls nicht, fügen Sie diese Zeile in der Abhängigkeit compile 'com.android.support:appcompat-v7:25.2.0' hinzu und machen Sie Ihre Aktivität so, dass AppCompatActivity erweitert wird. –

0

Fragment kann aus zwei Pakete importiert werden android.app.Fragment und android.support.v4.app.Fragment mich so dort missmatch der Importklasse zwischen TextFragment und MenuFragment. ersetzen so in MenuFragment

Import android.support.v4.app.ListFragment

mit

Import android.app.ListFragment

, weil es sein kann, classCastEception