0

Dans mon Xamarin Android, je veux résoudre gestionnaire de v4.fragment, je suis le résoudre de la manière suivanteXamarin MvvmCross: ne peut pas résoudre v4.FragmentManager

var ss = Mvx.Resolve<Android.Support.V4.App.FragmentManager>(); 

Mais, je reçois l'erreur:

MvvmCross.Platform.Exceptions.MvxIoCResolveException: Failed to resolve type Android.Support.V4.App.FragmentManager 
    at MvvmCross.Platform.IoC.MvxSimpleIoCContainer.Resolve (System.Type t) [0x0001c] in D:\git\MvvmCross\MvvmCross\Platform\Platform\IoC\MvxSimpleIoCContainer.cs:199 
    at MvvmCross.Platform.IoC.MvxSimpleIoCContainer.Resolve[T]() [0x00000] in D:\git\MvvmCross\MvvmCross\Platform\Platform\IoC\MvxSimpleIoCContainer.cs:189 
    at MvvmCross.Platform.Mvx.Resolve[TService]() [0x00005] in D:\git\MvvmCross\MvvmCross\Platform\Platform\Mvx.cs:34 
    at TJX.Core.IoC.MvxDependencyResolver.ResolveType[T]() [0x00001] in /Users/ali00261/Loyalty-MultiBanner-Mobile/TJX.Core/IoC/MvxDependencyResolver.cs:11 

Quelqu'un peut-il me dire ce que je fais de mal et comment le résoudre? Merci.

MISE À JOUR

Je veux remplacer un FrameLayout dans mon MvxFragment<TViewModel> avec un support.v4.fragment. ZXingScannerFragment est un support.v4.Fragment fourni par 'ZXing' pour scanner le code-barres.

var scanFragment = new ZXingScannerFragment(); 
var ss = Mvx.Resolve<Android.Support.V4.App.FragmentManager>(); 
ss.BeginTransaction() 
        .Replace(Resource.Id.fragment_scancontainer, scanFragment) 
        .Commit(); 

Mon but est de remplacer une vue (mise en page de cadre) avec un support.v4.Fragment

+0

Je ne crois pas que MvvmCross enregistre un 'FragmentManager' contre le conteneur IoC car vous pouvez avoir plusieurs' FragmentManager' dans une seule application. Qu'est-ce que vous essayez de faire que vous voulez résoudre 'FragmentManager'? – Plac3Hold3r

+0

@ Plac3Hold3r J'ai mis à jour ma question. Je veux remplacer une vue (Layout) dans mon MvxFragment par un support.v4.fragment – TheDeveloper

+0

Si vous avez affaire à des fragments enfants à l'intérieur de votre fragment, vous pouvez utiliser 'ChildFragmentManager' pour obtenir des fragments imbriqués. Ce sera une propriété de l'implémentation 'Fragment' de base dont' MvxFragment' hérite. – Plac3Hold3r

Répondre

2

Vous pouvez utiliser le ChildFragmentManager pour soutenir la gestion des fragments à l'intérieur des fragments.

ChildFragmentManager.BeginTransaction() 
    .Replace(Resource.Id.fragment_scancontainer, scanFragment) 
    .Commit(); 

En termes de App.Fragment vs Support.V4.App.Fragment, il semble que vous utilisez les dépendances erronées.

Mvvmcross offrent deux MvxFragment type de classe pour correspondre à ceux offerts dans Android:

Vous devez utiliser la version Support Library Fragment de MvxFragment afin d'utiliser Support.V4.App.Fragment avec un ChildFragmentManager.

+0

en utilisant directement le code 'ChildFragmentManager.BeginTransaction ..//' me donne l'erreur que scanFragment ne peut pas être passé en paramètre à partir de 'support.v4.app.fragment type'. Je ne peux pas changer le type de fragment d'analyse car je l'obtiens d'un nuGet tiers (ZXing). Où voulez-vous que j'utilise la version de Support Library Fragment de 'MvxFragment'? – TheDeveloper

+0

Pourriez-vous inclure le message d'erreur que vous obtenez dans votre question?En regardant [ZXing Fragment] (https://github.com/Redth/ZXing.Net.Mobile/blob/master/Source/ZXing.Net.Mobile.Android/ZXingScannerFragment.cs) source c'est un fragment de support, donc je pense que le problème est que votre MvxFragment n'est pas du paquet 'MvvmCross.Droid.Support.V4' – Plac3Hold3r

+0

Je l'ai eu .. J'ai mis à jour ma classe de fragment pour hériter' MvvmCross.Droid.Support.V4.MvxFragment' comme vous l'avez demandé pour et ça marche maintenant. Je vous remercie. – TheDeveloper