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 :

Database + on a null object reference


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2017
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2017
    Messages : 80
    Par défaut Database + on a null object reference
    Bonjour....
    Je possède une Database sur Firebase, et je souhaite y mettre les informations qu'il y a dedans, dans mon TestActivity..

    Mon problème:

    - Si j'utilise la solution 1 (voir le onDataChange dans le code ci dessous)) et que je vais sur mon onglet TestActivity, mon application ne plante pas, mais le texte de mon TextView est remplacé par du vide, donc rien du tout...

    - Si j'utilise la solution 2 (voir le onDataChange dans le code ci dessous)) et que je vais sur mon onglet TestActivity, et bien mon application plante et met ce message d'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.debarflorian.imcapp.UserProfile.getUserName()' on a null object reference
            at com.debarflorian.imcapp.TestActivity$1.onDataChange(TestActivity.java:41)
    Sauriez vous de quoi ça peut venir ? :-/
    Cordialement.

    Voici mon code:

    TestActivity:

    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
     
    public class TestActivity extends AppCompatActivity {
     
        private FirebaseAuth firebaseAuth;
        private FirebaseDatabase firebaseDatabase;
        private TextView profileName;
     
     
        @Override
        protected void onCreate (Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_test);
     
            profileName = findViewById(R.id.tvProfileName);
     
            firebaseAuth = FirebaseAuth.getInstance();
            firebaseDatabase = FirebaseDatabase.getInstance();
     
            DatabaseReference databaseReference = firebaseDatabase.getReference(firebaseAuth.getUid());
     
            databaseReference.addValueEventListener(new ValueEventListener() {
     
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    // Solution 1
                    UserProfile userProfile = new UserProfile();
                    // Solution 2
                    UserProfile userProfile = dataSnapshot.getValue(UserProfile.class);
     
                    profileName.setText(userProfile.getUserName());
                }
     
                @Override
                public void onCancelled(DatabaseError databaseError) {
                }
            });
     
     
        }
    }
    UserProfile.class

    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
     
    public class UserProfile {
        public String userName;
     
        public UserProfile(){
        }
     
        public UserProfile(String userName) {
            this.userName = userName;
        }
     
     
        public String getUserName() {
            return userName;
        }
     
        public void setUserName(String userName) {
            this.userName = userName;
        }
    }

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2017
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2017
    Messages : 80
    Par défaut
    Pas d'idées svp ?

  3. #3
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    Salut,
    je crois que tu qu´il faudra faire ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
      @Override
      public void onDataChange(DataSnapshot dataSnapshot) {
          if(dataSnapshot.exists()) {
             String username = "";
             for(DataSnapshot ds: dataSnapshot.getChildren()) {
                 UserProfile userProfile = ds.getValue(UserProfile.class);
                 username += userProfile.getUserName();
             }
             profileName.setText(username);
          }
    c´est une idée, mais tu devrais d´abord tester si cela existe avant de l´utiliser.

    Eric

Discussions similaires

  1. Réponses: 9
    Dernier message: 24/10/2012, 23h37
  2. [AC-2010] Invalid database object reference
    Par btks59 dans le forum Access
    Réponses: 2
    Dernier message: 12/08/2011, 06h07
  3. Null object reference
    Par elisfr dans le forum Débuter avec Java
    Réponses: 13
    Dernier message: 11/10/2008, 21h01
  4. [C#][debutant]erreur => object reference is required for a no
    Par ChristopheOce dans le forum Windows Forms
    Réponses: 3
    Dernier message: 25/01/2006, 13h47
  5. [C#][.net2] NULL Object reference lors de l'accès à un DGV
    Par VincenzoR dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/01/2006, 02h00

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