错误“java.lang.StackOverflowError:”尝试在Firebase数据库中保存对象时 [英] error "java.lang.StackOverflowError:" when try to save object in Firebase Database

查看:92
本文介绍了错误“java.lang.StackOverflowError:”尝试在Firebase数据库中保存对象时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是新来的firebase。
我尝试将应用程序中列出的用户的属性保存到数据库 Firebase 中,这是代码

  mAuthListener = new FirebaseAuth.AuthStateListener(){
@Override $ b $ 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));
}
}
};

这里的问题是当我使用Google登录进入我的应用程序时,我无法保存用Google登录我的应用程序的用户的信息到我的Firebase数据库,但是我可以使用电子邮件方法保存用户的登录信息。
这是使用电子邮件进入我的应用程序的代码

  mAuth.createUserWithEmailAndPassword(email.getText()。toString (),password.getText()。toString())
.addOnCompleteListener(HalamanPendaftaran.this,new OnCompleteListener< AuthResult>(){
@Override
public void onComplete(@NonNull Task< AuthResult>任务){
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();
}
}
});

至于尝试存储使用Google登录的用户数据时遇到的错误

  01-10 18:42:00.619 8218-8218 / com.example.asus.fastapp E / AndroidRuntime:致命例外:main 
进程:com.example.asus.fastapp,PID:8218
java.lang.StackOverflowError:堆栈大小8MB
在java.lang.reflect.Method.invoke(本地方法)
at (com.google.android)
.gms.internal.zzbqi.zzax(未知来源)
在com.google.android.gms.internal.zzbqi.zzaE(未知来源)
来自com.google.android.gms.internal.zzbqi $ zza.zzaF(未知来源)
在com.google.android.gms.internal.zzbqi.zzax(未知来源)
在com.google.android.gms.internal.zzbqi.zzaE(未知来源)
在com.google.android.gms.internal.zzbqi $ zza.zzaF(未知来源)
在com.google.android.gms.internal.zzbqi.zzax(未知来源)
在com.google.android.gms.internal.zzbqi.zzaE(未知来源)
在com.google.android.gms.internal.zzbqi $ zza.zzaF(未知来源)
在com.google .android.gms.internal.zzbqi.zzax(未知来源)
在com.google.android.gms.internal.zzbqi.zzaE(未知来源)
来自com.google.android.gms.internal .zzbqi $ zza.zzaF(未知来源)
,位于com.google.android.gms.internal.zzbqi.zzax(未知来源)
,位于com.google.android.gms.internal.zzbqi.zzaE (未知源)
在com.google.android.gms.internal.zzbqi $ zza.zzaF(未知源)
在com.google.android.gms.internal.zzbqi.zzax(未知源)
在com.google.android.gms.internal.zzbqi.zzaE(未知来源)
在com.google.android.gms.internal.zzbqi $ zza.zzaF(未知来源)
在com.google.android.gms.internal.zzbqi.zzax(未知来源)
在com.google.android.gms.internal.zzbqi.zzaE(未知来源)
在com.google.android .gms.internal.zzbqi $ zza.zzaF(未知来源)
,位于com.google.android.gms.internal.zzbqi。 zzax(未知来源)
在com.google.android.gms.internal.zzbqi.zzaE(未知来源)
来自com.google.android.gms.internal.zzbqi $ zza.zzaF(未知来源)
在com.google.android.gms.internal.zzbqi.zzax(未知来源)
在com.google.android.gms.internal.zzbqi.zzaE(未知来源)
at com.google.android.gms.internal.zzbqi $ zza.zzaF(未知来源)
,位于com.google.android.gms.internal.zzbqi.zzax(未知来源)
,位于com.google。 android.gms.internal.zzbqi.zzaE(未知来源)
在com.google.android.gms.internal.zzbqi $ zza.zzaF(未知来源)
在com.google.android.gms。 internal.zzbqi.zzax(未知来源)
在com.google.android.gms.internal.zzbqi.zzaE(未知来源)
来自com.google.android.gms.internal.zzbqi $ zza。 zzaF(未知来源)
在com.google.android.gms.internal.zzbqi.zzax(未知来源)
来自com.google.android.gms.internal.zzbqi.zzaE(未知来源)
,位于com.google.android.gms.internal.zzbqi $ zza.zzaF(未知来源)
,位于com.google.an droid.gms.internal.zzbqi.zzax(未知来源)
在com.google.android.gms.internal.zzbqi.zzaE(未知来源)
来自com.google.android.gms.internal。 zzbqi $ zza.zzaF(未知来源)
在com.google.android.gms.internal.zzbqi.zzax(未知来源)
来自com.google.android.gms.internal.zzbqi.zzaE(未知来源)
在com.google.android.gms.internal.zzbqi $ zza.zzaF(未知来源)
在com.google.android.gms.internal.zzbqi.zzax(未知来源)
在com.google.android.gms.internal.zzbqi.zzaE(未知来源)
来自com.google.android.gms.internal.zzbqi $ zza.zzaF(未知来源)
at com.google.android.gms.internal.zzbqi.zzax(未知来源)
,位于com.google.android.gms.internal.zzbqi.zzaE(未知来源)
,位于com.google.android。 gms.internal.zzbqi $ zza.zzaF(未知来源)
在com.google.android.gms.internal.zzbqi.zzax(未知来源)
来自com.google.android.gms.internal。 zzbqi.zzaE(未知来源)
,位于com.google.android.gms.internal.zzbqi $ zza.zzaF(未知酸味ce)
在com.google.android.gms.internal.zzbqi.zzax(未知来源)
在com.google.android.gms.internal.zzbqi.zzaE(未知来源)
在com.google.android.gms.internal.zzbqi $ zza.zzaF(未知来源)
在com.google.android.gms.internal.zzbqi.zzax(未知来源)
在com.google .android.gms.internal.zzbqi.zzaE(未知来源)
,位于com.google.android.gms.internal.zzbqi $ zza.zzaF(未知来源)
,位于com.google.android.gms .internal.zzbqi.zzax(Unknown Source)
at com.google.android.gms.internal.zzbqi.zzaE

这是成功保存
Firebase数据库数据



任何帮助将不胜感激

解决方案

您的成员类包含 Uri 类型的字段。 Uri 不是 Firebase序列化的其中一个本机类型



更改您的成员类将Uri存储为字符串,并使用 Uri.toString() Uri.parse()转换。


I am new to the firebase. I tried to save the properties of the users listed in my application into the database Firebase, this is code

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));
            }
        }
    };

the problem here is when I get into my application using the Google sign in, I can not save the information of the user who signed in to my application with google to my firebase database, but I can save the user's login information using email method. This is the code to get into my application using email

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("");
                                }
                            }
                        });

As for the error I get when trying to store user data that sign in using 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

This is one of the data of the user who successfully saved Firebase Database data

any help would be greatly appreciated

解决方案

Your Member class contains a field of type Uri. Uri is not one of the native types that Firebase serializes.

Change your Member class to store the Uri as a String and use Uri.toString() and Uri.parse() to convert.

这篇关于错误“java.lang.StackOverflowError:”尝试在Firebase数据库中保存对象时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆