2017-10-03 3 views
-2

https://www.journaldev.com/9266/android-fragment-lifecycle#comment-39628Fragments de développement app

de iam suivant le lien ci-dessus pour développer des fragments dans mon application Android, mais iam frappé dans ce fragment particulier si cette erreur est résolu l'application fonctionnera bien pouvez-vous me faire savoir où je suis allé mal

enter image description here

enter image description here

ajouté 2ème image pour faire à tout le monde clair que l'erreur face iam lorsque iu se getSupportFragmentManager()

départ cette capture d'écran trop

enter image description here

+0

does fragment2 est ID de votre conteneur? –

+0

"si cette erreur est résolue, l'application fonctionnera ..." donc nous devons deviner quelle est l'erreur? – TDG

+0

Quelle est l'erreur? – nomag

Répondre

3

Il existe 2 types de fragments:

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

Vous devez utiliser le FragmentManager pour les correspondants. Soit getFragmentManager() soit getSupportFragmentManager().

+0

explication parfaite son fonctionnement –

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

Vous utilisez la bibliothèque de soutien. La classe de référence de votre TextFragment est android.support.v4.app.fragment à la place android.app.fragment.

Vous devez utiliser

getSupportFragmentManager().findFragmentById(id); 

Bonne chance

Emre

+0

hey mon pote si j'utilise getSupportFragmentManager() dans ce particulier android.support.v4.app.fragment –

+0

encore iam obtenir erreur, il fonctionne bien si J'utilise android.app.fragment avec getFragmentManager() –

+0

Ensuite, vous utilisez les deux classes dans le même projet. Vous devriez vérifier chaque fragment et chaque activité pour avoir la même référence. –

0

Le problème semble être que vous utilisez getFrgamentManager() mais vous pouvez voir sur vos importations en haut que vous utilisez au moins une bibliothèque de support ce qui signifie que votre TextFragment pourrait étendre la classe android.support.v4.app.Fragment.

Cela signifie que pour que cela fonctionne, vous devez appeler le supportFragmentManager au lieu du FragmentManager standard.

Vous faites cela en changeant:

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

être:

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

Lorsque vous utilisez des fragments assurez-vous que vos importations en haut sont que vous attendez à être. Lorsque vous utilisez le fichier android.support.v4.app.Fragment, vous devez utiliser le fichier supportFragmentManager.

EDIT:

Comme vos modifications et vos captures d'écran montrent, vous ne pouvez pas invoquer getSupportFragmentManager() dans le ListFragment. Ce qui signifie que vous devez faire:

getActivity().getSupportFragmentManager() 
+0

hey mon pote si j'utilise getSupportFragmentManager() dans ce particulier android.support.v4.app.fragmen –

+0

encore iam obtenir l'erreur il fonctionne très bien si j'utilise android.app.fragment avec getFragmentManager() –

+0

@KrishnaChaitu votre activité s'étend AppCompatActivity ? Si ne pas ajouter cette ligne dans la dépendance compiler 'com.android.support:appcompat-v7:25.2.0' et rendre votre activité pour étendre AppCompatActivity. –

0

Fragment peut être importé de deux paquets android.app.Fragment et android.support.v4.app.Fragment moi donc il missmatch de la classe d'importation entre TextFragment et MenuFragment. si substituons dans MenuFragment

importation android.support.v4.app.ListFragment

avec

importation android.app.ListFragment

car il peut y avoir classCastEception