Partage
  • Partager sur Facebook
  • Partager sur Twitter

Récupérer paramètre

    29 août 2019 à 14:31:47

    Bonjour,

    Je souhaiterais savoir comment récupérer la valeur d'un int et l'intégrer à un texte.

    Exemple :

    Le joueur fait une partie et obtient 8/10. Il arrive sur l'écran de fin de partie (photo ci-dessous) et voit son score

     Ici, le nombre de points y est bien indiqué.

    Maintenant si le joueur décide de partager son score, il clique sur le troisième bouton pour envoyer un message (comme sur l'image ci-dessous)

     Malheureusement, une fois arriver dans l'application de messagerie, le score est de 0/10. Or, le joueur a eu un total de 8/10.

    Alors comment faire pour afficher ce 8/10 à la place de 0/10 ?

    Vous pouvez retrouver les codes ici :https://github.com/Developwebpro/Application

    Merci beaucoup

    Thibault 

    • Partager sur Facebook
    • Partager sur Twitter
      29 août 2019 à 16:34:41

      Salut,

      Dans le constructeur de WinPage tu n'assignes pas la valeur passée en paramètre au champ de la classe (et le paramètre et le champ ont le même nom, ça aide pas spécialement).

      • Partager sur Facebook
      • Partager sur Twitter
        29 août 2019 à 19:37:43

        Merci Storweaker,
        Donc ce que vous me dites c'est de renommer mon paramètre en "pointsGagnés" au lieu de "pointGagné" ?
        Comment lui assigner la valeur de "pointGagné" ?
        J'ai fais cela :
        public WinPage(int pointGagné)
                {
                    InitializeComponent();
                    pointGagné = pointsGagnés;
                    NavigationPage.SetHasNavigationBar(this, false);
                    scoreNumber.Text = "Vous avez un score de " + pointGagné + "/10";
                }
        
        ...
        
        public async void SharewinButton_Clicked(object sender, EventArgs e, int pointsGagnés)
                {
                    await Share.RequestAsync(new ShareTextRequest
                    {
                        Text = "Hey ! J'ai obtenu " + pointsGagnés + "/10 pour ma partie. Installe cette application ici : google.fr et envois moi ton score.",
                        Title = "Points XXX+"
                    });
                }
        Cependant j'obtiens l'erreur : EventHandler "SharewinButton_Clicked" with correct signature not found in type "XXX.Views.WinPage" pour le bouton dans le WinPage.xaml. 
        Comment résoudre ce problème ?
        Merci

        -
        Edité par (o-o) 30 août 2019 à 7:43:40

        • Partager sur Facebook
        • Partager sur Twitter
          30 août 2019 à 11:45:11

          Salut,

          Je ne t'ai pas dit de modifier la signature de la méthode Clicked, le bouton ne peut pas transmettre de valeur quand il est cliqué (enfin peut-être que si je m'y connais pas suffisemment, mais de toute manière le bouton n'a aucune raison de connaître les points gagnés).

          Je vais tenter d'expliquer un peu plus le problème avec cet extrait de ton code :

          public partial class WinPage : ContentPage
              {
                  int pointGagné;
          
                  public WinPage(int pointGagné)
                  {
                      // des trucs
                      scoreNumber.Text = "Vous avez un score de " + pointGagné + "/10";
                  }
          
          
                  public async void SharewinButton_Clicked(object sender, EventArgs e)
                  {
                      await Share.RequestAsync(new ShareTextRequest
                      {
                          Text = "Hey ! J'ai obtenu " + pointGagné + "/10 pour ma partie. Installe cette application ici : google.fr et envois moi ton score.",
                          Title = "Points XXX+"
                      });
                  }
          }


          La classe WinPage possède un champ "pointGagné" qui te sert a priori à stocker le nombre de points gagnés, ça me va.

          Dans le constructeur de la classe, le paramètre s'appelle aussi "pointGagné", a priori il te sert à transmettre le nombre de points gagnés quand tu construis l'instance, ça me va.

          Encore dans le constructeur tu utilise la variable "pointGagné", mais du coup c'est le champ ou le paramètre ? Le compilateur a l'air d'être sympa et se dit que tu veux utiliser le paramètre puisque tu es dans le constructeur, donc tu affiche bien 8/10 dans ton texte.

          Dans la méthode du bouton, tu utilises la variable "pointGagné", ici pas le choix c'est forcément le champ. Mais quelle est la valeur stockée ? Tu ne l'assignes nulle part.

          Ce qui ne t'aide pas à trouver le problème c'est que le champ et le paramètre du constructeur ont le même nom.

          Donc tu devrais changer le nom d'un des deux, un truc que je vois de c'est de commencer le nom d'un champ par "_".

          Après avoir fait ça, dans le constructeur, n'oublie pas d'assigner la valeur du paramètre "pointGagné" à celle du champ "_pointGagné".

          -
          Edité par Stormweaker 30 août 2019 à 11:46:34

          • Partager sur Facebook
          • Partager sur Twitter
            30 août 2019 à 13:46:26

            Pour assigner la valeur de pointGagné à celle de _pointGagné, faut il faire comme ca :

            pointGagné = _pointGagné

            Si non, comment faire ?

            Merci beaucoup

            • Partager sur Facebook
            • Partager sur Twitter
              30 août 2019 à 15:22:04

              Non, si _pointGagné est le champ et pointGagné le paramètre, c'est l'inverse.

              MonConstructeur(int pointGagné)
              {
                  _pointGagné = pointGagné;
              }



              Sinon, il y a aussi un moyen de distingué un champ/propriété d'un objet d'un paramètre, c'est de mettre "this."devant.

              class Toto
              {
                  int titi;
              
                  Toto(int titi)
                  {
                      this.titi = titi;
                  }
              }

              Mais avoir

              • Partager sur Facebook
              • Partager sur Twitter
              Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.

              Récupérer paramètre

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown