FireBase // java.lang.NullPointerException

  • Hallo Lieber Community,
    ich bin neu hier und hoffe ich habe meine Frage im richtigen Bereich gestellt.
    Ich bin gerade dabei eine kleine Chat App zu programmieren.
    Die App funktioniert in Verbindung mit Firebase.
    Reg und Login funktionieren einwandfrei, auch meine Untermenüs machen bisher keine Probleme.
    Allerdings habe ich ein Problem mit meiner SettingsActivity.
    Bein Versuch in diese zu wechseln crasht meine App und ich erhalte folgenden Fehler :



    Hier meine SettingsActivity:





    Und hier meine FireBase Datenbank Struktur :



    Code
    mfumessageforyou
    Users
    0f1swOIAXGZyq8KwKnKOPHdZu6K2
    image: "default"
    name: "445566988"
    status: "Hi there, I'm using MFU Chat App."
    thumb_image: "default"


    Der Fehler liegt wohl ( so vermute ich ) daran, dass die UID von firebase nicht gelesen werden kann -> NullException. Allerdings blieben bisher alle Versuche den Fehler zu fixen erfolglos und ich stehe wirklich vor einem Rätsel.


    Ich würde mich riesig freuen, wenn sich jemand diesem Problem annehmen und mir etwas auf die Sprünge helfen könnte :)


    Liebe Grüße
    Ebi

  • Hallo auch ich bin voll der Meinung das zum Zeitpunkt gar kein User eingelogt ist.
    Frage wo erstellst und logst du denn überhaupt einen User ein?
    Ist der User überhaupt in der firerbase console vorhanden?


    Normalerweise benutzt man zu Login einen listner.
    Der den User mit Email und Passwort einlogt.


    Schaue dir das mal an
    https://firebase.google.com/docs/auth/android/password-auth


    Ohne einen listner und vorherigen Registrierung der E-Mail und Passwort von den User wirst kein Erfolg haben.


    Auch musst du in der Konsole die Authentifizierung für Email u Passwort aktivieren. Hoffe das du das überhaupt hast.

  • Hallo zusammen,
    vorab schon einmal vielen Dank für eure Antworten.
    Meiner Meinung nach funktioniert mein Reg und LogIn ... hier mal meine anderen Files, vielleicht hat sich doch ein Fehler eingeschlichen?
    Ich bin wirklich am verzweifeln :D


    Main Activity:

    Start Activity :



    Register Activty :


  • sorry für Doppelpost aber die LogIn hat nicht mehr in den vorherigen Post gepasst:


    LogIn Acitivty:



    Die Email+PW Auth ist natürlich auch bei Firebase aktiviert ( ich denke auch richtig, sonst würde die Reg + der LogIn ja nicht funktionieren oder? )



    vorab schonmal wieder vielen Dank für eure Antworten:)


    Liebe Grüße
    Ebi

  • Hallo


    Also ich gehe mal davon aus das deine Registrierung korrekt abläuft.


    Und beim Login etwas schief geht.


    Wird den überhaupt der listner „onComplete“ aufgerufen?


    Normalerweise macht man bei so etwasen auch einen AuthStateListener() der in der onCrate erstellt und in der onStart gestartet und in der onstop beendet wird. Der überprüft ob ein User eingeloggt ist. Das kann ich bei dir weder in der login Activity noch in MainActivity erkennen.Denn nirgend wo wird geprüft ob jemand eingeloggt ist und wenn ja wird auch nicht ausgeloggt.Dafür ist der AuthStateListener() da.

  • Hallo,
    vielen Dank für die Antwort :)
    ich habe meine LogIn nun wie folgt ergänzt:


    bekomme aber leider immer noch den selben Fehler :(
    Hab ich noch etwas falsch gemacht?
    Vielen Dank im Voraus :)
    LG
    Ebi

  • eigentlich müsste es gehen.
    Frage welche Parameter variablen überträgst du an die Methode loginBoutton die beiten Variablen werden in der Methodegar nicht benutzt. Sondern edittext variablen. Ist denn auch der User und das Passwort was du an den listner übergibt auch in der firabase vorhanden.


    Es kann auch sein das du als ein anderer user eingelogt bist. Mache mal vorher ein layout. Es kann auch sein da deine firebase etwas durcheinander ist.


    Wie ist das hast du den listner auch in deiner minactivity?

  • Hallo,


    vielen Dank für deine Antwort und sorry dass meine Rückmeldung so spät kommt.
    Ich wollte jedoch erst einige Versuche starten bevor ich nochmals nachfrage.
    Also meiner Meinung nach liegt es daran, dass die MainActivity der SettingsActivity den CurrentUser nicht übergibt.
    Wenn ich die LogInActivit so ändere, dass ich nach dem Login nicht in der Main sondern direkt in der Settings lande, funktioniert alles.
    Hängt das mit dem Auth State Listener zusammen?
    Diesen habe ich bisher noch nicht in meiner Main.
    Ich wollte Ihn hinzufügen bin jedoch trotz stundenlanger Versuche immer wieder gescheitert.
    Meistens kam ein Loop dabei raus, welcher mich immer wieder von der Main in die Main schickt ^^
    Könnte mir evtl jemand direkt erklären, wie und wo ich den Auth Listener in der Main plazieren muss?


    Vielen Dank im Voraus.
    Liebe Grüße
    Ebi

  • Hallo normalerweise übergingen activity keine Parameter an eine andere das sind ich sage mal eigenständige Einheiten. Wenn du in der Mainactivity auf dasAut Objekt zugreifen willst würde ich es dort auch erstelle und auch den listner dort erstellen. Damit du auch in der Main eine änderung mitbekommst.


    Da activitys eigene Einheiten sind kannst du nicht ohne weiteres auf variablen einer anderen zugreifen. Ausnahme globale static Variablen.

  • guten Morgen,


    Vielen vielen Dank für deine erneute Antwort.
    Ich hab mir schon gedacht , dass ich den AuthListener auch in der Main einbauen muss ich komm nur iwie nicht drauf wie 8|
    In der LogIn ist er ja an den LogIn Button geknüpft ich habe in der Main aber ja an sich keinen Button der zu Settings führt sondern nur das MenuItem.
    Kannst du mir vllt kurz erklären , wie ich den Listener ohne Button Verknüpfung einbaue?
    Ich kriegs leider nicht hin :/


    Und dass die Variablen nicht an die andere klasse übergeben werden dachte ich mir auch schon mich hat es nur gewundert dass ich , wenn ich die logIn so ändere dass ich nach dem Klick auf den login Button nicht in der Main lande sondern in der Settings, alles funktioniert, auch ohne einen weiteren Listener , woran liegt das denn dann?


    Liebe Grüße
    Ebi

  • Hallo eigentlich habe ich dir schon in Post 8 gezeigt wie den authstatelistner benutzen kannst.
    Auch in der mainactivty gibt es eine onCreate .


    Code
    FirebaseAuth.AuthStateListener  mAuthListener = new FirebaseAuth.AuthStateListener() {
                @Override
                public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                    FirebaseUser user = firebaseAuth.getCurrentUser();
                    if (user != null) {
                        Intent i = new Intent(getApplicationContext(), MainActivity.class);
                        startActivity(i);
                    }
                }
            };

    Du bindest den listner nicht an einen Button sondern erstellst einen neuen in der oncrate.


    Wenn Du noch nicht klar kommst dann poste nochmal deinen aktuellen Code.

  • wieder vielen Dank.
    Hab den Listener in die Main gepackt wie du s gepostet hat.
    Hier meine Main:



    und hier meine Settings:

    Durch meine if(mCurrentUser != null) { ... in der Settings bekomme ich zwar kein Null Exception mehr und er macht die Settings Page auf aber er aktualisiert die Daten nicht sprich der User = Null.


    Ich bin echt am verzweifeln xD vielen Dank für deine Hilfe !!!
    Liebe Grüße

  • sorry doof von mir natürlich ich hab den Listener ja gar nie aufgerufen ... hier die geänderte Main:


    hier habe ich jetzt wieder den Loop der mich immer wieder von Main zu Main schickt heißt auch hier scheint der User = null zu sein oder?

  • Hi also dein listner solltest du global erstellen im Klassenrumf und nicht lokal in der oncreate. Die mAuthListener variable in der oncreate ist nicht in der onStart sichtbar.


    Schaue dir noch mal mein post 8 an.
    Du solltest dir das mit
    Lokalen und globalen Klassen Variablen in Java nochmal abschauen.


    In der onStart wo du den listner auf die mAuth variable setzt hast du wenn du keine globale variable machst eignetlich gar keine. Mach es wie in Post 8.

  • Hallo,


    vielen Dank nochmals für deine Hilfe.
    Wir haben das mit dem StateListener einfach nicht hinbekommen.
    Wir haben das Problem dann über eine andere Methode gelöst.
    Dennoch nochmals vielen Dank für deine Bemühungen, mal sehen ob ich im weiteren Verlauf mit noch mehr Problemen zu kämpfen habe :D
    Liebe Grüße
    Ebi

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!