0
votes

en utilisant android.support.v4.app.fragmenter ne fonctionnant pas dans C # xamarin

J'essaie d'obtenir une fragmentation et un fragmentManager pour travailler en C # à l'aide d'Android.Support.v4.app.fragmenter, mais l'espace de noms est grisé et que vs dit «L'utilisation de la directive est inutile». J'ai installé le package XAMARIN Android Support V4 Nuget, nettoyé et reconstruit mon projet, installé xamarin.android.support.fragment, aucun n'a travaillé. Aidez-moi s'il vous plaît pourquoi ceux-ci sont toujours jugés obsolètes dans VS, même si j'ai inclus cette bibliothèque.

using Android.App;
using Android.OS;
using Android.Support.V7.App;
using Android.Runtime;
using Android.Widget;
using Android.Support.V4.App.Fragment;
using System;

namespace LoginSystem
{
    [Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
    public class MainActivity : AppCompatActivity
    {

        private Button mBtnSignUp;


        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            Xamarin.Essentials.Platform.Init(this, savedInstanceState);
            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.activity_main);

            mBtnSignUp = FindViewById<Button>(Resource.Id.btnSignUp);

            mBtnSignUp.Click += (object sender, EventArgs e) =>
            {
                //DEPRECATION HERE
                FragmentTransaction transaction = FragmentManager.BeginTransaction();
                dialog_SignUp signUpDialog = new dialog_SignUp();
                signUpDialog.Show(transaction, "dialog fragment");
            };
        }
        public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
        {
            Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);

            base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
        }
    }
}


0 commentaires

3 Réponses :


0
votes

Avez-vous installé le package Nuget xamarin.android.support.v4 v28.0.0.3?

Si vous l'avez, vous devez utiliser le supportFragmentManager au lieu du fragmentManager, et cela résoudra votre problème.

Prenez ALOOK à cela: Entrez la description de l'image ici


2 commentaires

Oui j'ai ce paquet exact. Malheureusement, FragmentTransaction est toujours obsolète et il ne semble pas exister une fragmentation de soutien .. Lorsque je change fragmenttransaction en var, le .show () cesse de fonctionner


Bonjour, ça marche ici sans aucun problème. Le soutienfragmentManager fait partie du contexte si vous héritez de l'appelcompativement. Il semble être une mauvaise configuration, alors si j'étais toi; Je supprimerai le dossier .vs, avec les dossiers BIN et OBJ, et effacerez également le cache des paquets (je suppose que vous savez comment le faire). Ensuite, je vais franchir mes doigts et redémarrer le VS comme administrateur et essayer de tout reconstruire.



0
votes

Utilisez le supportfragmentManager et complètement qualifié fragmenttransaction car cette classe existe dans deux espaces de noms.

android.support.v4.app.fragmmentTransaction


0 commentaires

0
votes

Selon votre code, vous utilisez FragmentManager et FragmentTransaction, l'espace de noms sont android.app.fragmentManager et android.app.fragmenttransation , alors SignupDialog est l'espace de noms: < fort> android.app.fragment , mais vous pouvez regarder le Android Documentation , il est obsolète dans l'android Pie / API Niveau 28.

Vous pouvez donc utiliser Android.Support.v4.app.fragment, premièrement, vous devez installer xamarin.android.support.v4 par Package Nuget d'abord.

puis utilisez Framelayout pour contenir android.support.v4.app.fragment xxx < P> Je fais un échantillon à ce sujet de deux manières, vous pouvez jeter un coup d'œil:

HTTPS: //github.com/cherrybu/fragment


0 commentaires