IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Variable récupéré vide dans une seconde classe


Sujet :

Android

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2019
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Variable récupéré vide dans une seconde classe
    Bonjour,

    Voici mon problème

    J'ai une activité (ClassementActivité) qui doit afficher une recyclerview et une classe (MyAdapter) à coté pour gérer l'adapter de la recyclerview.
    Dans ClassementActivité j'ai un tableau de String que je souhaite utiliser dans MyAdapter pour cela j'utilise un getter mais mon souci est que le tableau récupéré dans MyAdapter est le tableau déclaré vide et non celui rempli dans le onCreate de ClassementActivité...

    Dans MyAdapter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ClassementActivité monTest = new ClassementActivité(); 
    private String monNouveauTableau[] = monTest.getMonTableau();
    J'ai surement oublié de faire quelque chose des idées?
    Merci d'avance

  2. #2
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Tout a fait normal au vu de ton code.
    Tu crées une activité à la main, ce qui ne doit être jamais fait, donc son onCreate n'est pas appelé, donc ton attribut est null.
    Passe plutôt l'attribut en paramètre du constructeur de ton adapter depuis ton Activity.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2019
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour ta réponse Hizin
    J'ai passé l'attribut en paramètre du constructeur et c'est pareil.. comme l'impression que l'affichage intervient avant l’exécution du code pour mettre à jour ma variable
    ClassementActivity
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    public class ClassementActivity extends AppCompatActivity {
     
        private TextView mTitreClassement;
        private RecyclerView rv ;
     
        private String mMonClassement[] = {"a","b","c","d","e"};
     
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_classement);
     
            //Recupere un classement trier depuis MainActivity
           Intent classementActivityIntent = getIntent();
           mMonClassement = classementActivityIntent.getStringArrayExtra("JOUEUR_TRIE");
     
            mTitreClassement = findViewById(R.id.classementview);
            rv =  findViewById(R.id.list);
     
     
            //Pour verifier que le tableau est vraiment recupere avec le Intent getStringArrayExtra
            mTitreClassement.setText(mMonClassement[0]);
     
     
     
            rv.setLayoutManager(new LinearLayoutManager(this));
            rv.setAdapter(new MyAdapter(mMonClassement));
     
     
        }
    }
    MyAdapter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
     
     
        private String mMonClassementTrie[] = {"1","2","3","4","5"};
     
        public MyAdapter(String mTab[]){
            this.mMonClassementTrie = mTab;
        }
     
     
        private final List<Pair<String, String>> characters = Arrays.asList(
                Pair.create(mMonClassementTrie[0], "Brave, curious, and crafty, she has been prophesied by the witches to help the balance of life"),
                Pair.create(mMonClassementTrie[1], "Lyra's daemon, nicknamed Pan."),
                Pair.create(mMonClassementTrie[2], "Lyra's friends"),
                Pair.create(mMonClassementTrie[3], "Lyra's uncle"),
                Pair.create(mMonClassementTrie[4], "Intelligent and beautiful, but extremely ruthless and callous.")
     
        );
     
        @Override
        public int getItemCount() {
            return characters.size();
        }
     
        @Override
        public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            LayoutInflater inflater = LayoutInflater.from(parent.getContext());
            View view = inflater.inflate(R.layout.list_cell, parent, false);
            return new MyViewHolder(view);
        }
     
        @Override
        public void onBindViewHolder(MyViewHolder holder, int position) {
            Pair<String, String> pair = characters.get(position);
            holder.display(pair);
        }
     
        public class MyViewHolder extends RecyclerView.ViewHolder {
     
            private final TextView name;
            private final TextView description;
     
     
            private Pair<String, String> currentPair;
     
     
            public MyViewHolder(final View itemView) {
                super(itemView);
     
     
                name = ((TextView) itemView.findViewById(R.id.name));
                description = ((TextView) itemView.findViewById(R.id.description));
     
                itemView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        new AlertDialog.Builder(itemView.getContext())
                                .setTitle(currentPair.first)
                                .setMessage(currentPair.second)
                                .show();
                    }
                });
            }
     
            public void display(Pair<String, String> pair) {
                currentPair = pair;
                name.setText(pair.first);
                description.setText(pair.second);
            }
        }
     
    }

  4. #4
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Je te suggère de dérouler ton code pour comprendre ce qu'il fait, car manifestement tu as un souci de compréhension et tu ne comprends pas ce que tu fais (et ce n'est en rien péjoratif/foutage de gueule).

    Voici ce qu'il se passe :
    • Tu bind ton layout
    • Tu crées ton adapter en passant ta liste en param
    • Tu écrase les valeurs de l'attribut de ton adapter avec les données passées en param (?)
    • Tu n'utilises jamais les données passées en param (qui vont dans l'attribut mMonClassementTrie) et tu n'utilises que characters (qui est créé statiquement).


    Que se passe-t-il actuellement ?
    Tu n'affiches rien ? Tu affiches 5 cellules avec 1, 2, 3, 4, 5 ? Tu affiches 5 cellules avec a, b,c, d, e ? Tu affiches les informations de la croisée des mondes ?
    Et que veux-tu faire ?

    Ps : La croisée des mondes est une très bonne trilogie :3
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

Discussions similaires

  1. Comment récupéré une variable qui est dans une autre classe
    Par hbx360 dans le forum Débuter avec Java
    Réponses: 8
    Dernier message: 15/04/2018, 20h40
  2. Réponses: 0
    Dernier message: 23/07/2017, 14h54
  3. variable d'application dans une classe
    Par flogreg dans le forum ASP.NET
    Réponses: 3
    Dernier message: 14/11/2007, 10h31
  4. Réponses: 1
    Dernier message: 03/04/2007, 12h02
  5. Réponses: 3
    Dernier message: 09/01/2007, 09h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo