4

Ich bin neu in der Firebase. Ich habe versucht, die Eigenschaften der Benutzer in meiner Anwendung in die Datenbank Firebase aufgeführt zu sparen, ist dieser CodeFehler "java.lang.StackOverflowError:" beim Versuch, Objekt in Firebase-Datenbank zu speichern

mAuthListener = new FirebaseAuth.AuthStateListener() { 
     @Override 
     public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
      firebaseuser = firebaseAuth.getCurrentUser(); 
      if (firebaseuser != null) { 
       finish(); 
       firebaseuser = mAuth.getCurrentUser(); 
       String nama = firebaseuser.getDisplayName(); 
       String mail = firebaseuser.getEmail(); 
       //String pass = password.getText().toString(); 
       String id = firebaseuser.getUid(); 
       //Uri gambar = firebaseuser.getPhotoUrl(); 
       member1 = new Member(nama, mail, "", "belum", "belum", "belum", id); 
       datab.getReference("member").push().setValue(member1); 
       startActivity(new Intent(getApplicationContext(), HalamanUtama.class)); 
      } 
     } 
    }; 

das Problem hier ist, wenn ich in meiner Anwendung erhalten in der Google unterzeichnen verwenden, kann ich das nicht retten Informationen des Benutzers, der sich in meiner Anwendung mit Google in meine Firebase-Datenbank angemeldet hat, aber ich kann die Anmeldeinformationen des Benutzers per E-Mail-Methode speichern. Diese ist der Code, um in meine Anwendung mit E-Mail

mAuth.createUserWithEmailAndPassword(email.getText().toString(), password.getText().toString()) 
         .addOnCompleteListener(HalamanPendaftaran.this, new OnCompleteListener<AuthResult>() { 
          @Override 
          public void onComplete(@NonNull Task<AuthResult> task) { 
           if (task.isSuccessful()) { 
            progressdialog.dismiss(); 
            finish(); 
            firebaseuser = mAuth.getCurrentUser(); 
            String nama = firebaseuser.getDisplayName(); 
            String mail = firebaseuser.getEmail(); 
            String pass = password.getText().toString(); 
            String id = firebaseuser.getUid(); 
            Uri gambar = firebaseuser.getPhotoUrl(); 
            member1 = new Member(nama, mail, pass, "belum", "belum", "belum", id, gambar); 
            datab.getReference("member").push().setValue(member1); 
            startActivity(new Intent(HalamanPendaftaran.this, HalamanUtama.class)); 
           } else { 
            progressdialog.dismiss(); 
            Toast.makeText(HalamanPendaftaran.this, "tidak dapat mendaftarkan user, tolong coba lagi !", Toast.LENGTH_SHORT).show(); 
            email.setText(""); 
            password.setText(""); 
           } 
          } 
         }); 

Wie für die Fehler, die ich erhalten, wenn zum Speichern von Benutzerdaten versuchen, die sich mit der schreiben google

01-10 18:42:00.619 8218-8218/com.example.asus.fastapp E/AndroidRuntime: FATAL EXCEPTION: main 
Process: com.example.asus.fastapp, PID: 8218 
java.lang.StackOverflowError: stack size 8MB 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.google.android.gms.internal.zzbqi$zza.zzaF(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzax(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzaE(Unknown Source) 
at com.google.android.gms.internal.zzbqi$zza.zzaF(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzax(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzaE(Unknown Source) 
at com.google.android.gms.internal.zzbqi$zza.zzaF(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzax(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzaE(Unknown Source) 
at com.google.android.gms.internal.zzbqi$zza.zzaF(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzax(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzaE(Unknown Source) 
at com.google.android.gms.internal.zzbqi$zza.zzaF(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzax(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzaE(Unknown Source) 
at com.google.android.gms.internal.zzbqi$zza.zzaF(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzax(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzaE(Unknown Source) 
at com.google.android.gms.internal.zzbqi$zza.zzaF(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzax(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzaE(Unknown Source) 
at com.google.android.gms.internal.zzbqi$zza.zzaF(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzax(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzaE(Unknown Source) 
at com.google.android.gms.internal.zzbqi$zza.zzaF(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzax(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzaE(Unknown Source) 
at com.google.android.gms.internal.zzbqi$zza.zzaF(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzax(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzaE(Unknown Source) 
at com.google.android.gms.internal.zzbqi$zza.zzaF(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzax(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzaE(Unknown Source) 
at com.google.android.gms.internal.zzbqi$zza.zzaF(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzax(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzaE(Unknown Source) 
at com.google.android.gms.internal.zzbqi$zza.zzaF(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzax(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzaE(Unknown Source) 
at com.google.android.gms.internal.zzbqi$zza.zzaF(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzax(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzaE(Unknown Source) 
at com.google.android.gms.internal.zzbqi$zza.zzaF(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzax(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzaE(Unknown Source) 
at com.google.android.gms.internal.zzbqi$zza.zzaF(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzax(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzaE(Unknown Source) 
at com.google.android.gms.internal.zzbqi$zza.zzaF(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzax(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzaE(Unknown Source) 
at com.google.android.gms.internal.zzbqi$zza.zzaF(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzax(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzaE(Unknown Source) 
at com.google.android.gms.internal.zzbqi$zza.zzaF(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzax(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzaE(Unknown Source) 
at com.google.android.gms.internal.zzbqi$zza.zzaF(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzax(Unknown Source) 
at com.google.android.gms.internal.zzbqi.zzaE 

Dies ist eines der Daten der Benutzer, der erfolgreich gespeichert Firebase Database data

jede Hilfe sehr

geschätzt würde
+0

Ich konnte keine Fehler finden, aber ich fragte mich, warum Sie 'finish()' so früh anrufen? – hotrod

+0

em wird es verwendet, um zwischen Aktivitäten zu wechseln. Das Problem liegt im Code "datab.getReference (" member "). push(). setValue (member1);" –

+0

Ich weiß, wofür es ist, aber ich habe mich nur gefragt, warum du es so früh im Code nennst anstatt später. Ich denke, du solltest nicht so früh "Finish()" nennen. Versuchen Sie, es aufzurufen, nachdem Sie die neue Aktivität tatsächlich gestartet haben. – hotrod

Antwort

14

Ihre Klasse Member enthält ein Feld vom Typ Uri. Uri ist nicht one of the native types, die Firebase serialisiert.

Ändern Sie Ihre Member Klasse, um den Uri als String zu speichern und Uri.toString() und Uri.parse() zu konvertieren.

+0

Vielen Dank, very muchh, deine Antwort funktioniert :)) –

+2

vielen Dank, ich habe meine Haare deswegen über Nacht gezogen. Firebase sollte eine verständlichere Fehlermeldung erzeugen, anstatt diese Zeile "com.google.android.gms.internal.zzbqi $ zza" zu spammen –

Verwandte Themen