Firebase“用户缺少一个没有参数的构造函数” [英] Firebase "User is missing a constructor with no arguments"

查看:87
本文介绍了Firebase“用户缺少一个没有参数的构造函数”的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图从Firebase中的/ User / tree中检索我的用户详细信息。我有以下用户对象:

pre $ public class User {
private String name;
私人字符串电子邮件;
私人FirebaseUser firebaseUser;
private String lastOnline;
私人LatLng latLng;
private ArrayList< SwapLocation>位置;
$ b $ public User(){}
$ b $ public String getName(){
if(firebaseUser.getDisplayName()!= null&&!firebaseUser.getDisplayName ().equals())
return firebaseUser.getDisplayName();
$ b $ if(name!= null&&!name.equals())
return name;

return;
}
public void setName(String name){
this.name = name;


public String getEmail(){
if(firebaseUser.getEmail()!= null&& firebaseUser.getEmail()。equals())
返回firebaseUser.getEmail();

if(email!= null&& email.equals())
return email;

return;
}
public void setEmail(String email){
this.email = email;
}

public void setFirebaseUser(FirebaseUser firebaseUser){
this.firebaseUser = firebaseUser;
}
public FirebaseUser getFirebaseUser(){
return firebaseUser;
}

public void setLastOnline(String lastOnline){
this.lastOnline = lastOnline;

public String getLastOnline(){
if(lastOnline!= null)
return lastOnline;

return;
}

public void setLatLong(LatLng latlng){
this.latLng = latlng;

public LatLng getLatLong(){
return this.latLng;
}

public ArrayList< SwapLocation> getLocations(){
返回位置;

public void setLocations(ArrayList< SwapLocation> locations){
this.locations = locations;




$ b我试图从Firebase中检索这个对象。该对象是在dataSnapshot中检索的,虽然它有序列化到我的用户对象的问题。



这是我从Firebase检索对象的方式:



$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $。
ref.addListenerForSingleValueEvent(
new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot){
User this_user = dataSnapshot.getValue(User.class) ;
}

@Override
public void onCancelled(DatabaseError databaseError){}
});

但是当试图做'用户this_user = dataSnapshot.getValue(User.class)'我得到错误,说用户缺少一个没有参数的构造函数

任何帮助将是伟大的,谢谢

解决方案

你必须得到这个错误,因为你的User类是一个子类。



解决方案:



标记您的类为静态:

  public class SomeParentClass {

public static class User {
....
}
}

或者在一个单独的文件中创建它。


I am trying to retrieve my user details from the /User/ tree i have in Firebase. I have the following User object :

public class User {
    private String name;
    private String email;
    private FirebaseUser firebaseUser;
    private String lastOnline;
    private LatLng latLng;
    private ArrayList<SwapLocation> locations;

    public User(){ }

    public String getName(){
        if(firebaseUser.getDisplayName() != null && !firebaseUser.getDisplayName().equals(""))
            return firebaseUser.getDisplayName();

        if(name != null && !name.equals(""))
            return name;

        return "";
    }
    public void setName(String name){
        this.name = name;
    }

    public String getEmail(){
        if(firebaseUser.getEmail() != null && firebaseUser.getEmail().equals(""))
            return firebaseUser.getEmail();

        if(email != null && email.equals(""))
            return email;

        return "";
    }
    public void setEmail(String email){
        this.email = email;
    }

    public void setFirebaseUser(FirebaseUser firebaseUser){
        this.firebaseUser = firebaseUser;  
    }
    public FirebaseUser getFirebaseUser(){
        return firebaseUser;
    }

    public void setLastOnline(String lastOnline){
        this.lastOnline = lastOnline;
    }
    public String getLastOnline(){
        if(lastOnline != null)
            return lastOnline;

        return "";
    }

    public void setLatLong(LatLng latlng){
        this.latLng = latlng;
    }
    public LatLng getLatLong(){
        return this.latLng;
    }

    public ArrayList<SwapLocation> getLocations(){
        return locations;
    }
    public void setLocations(ArrayList<SwapLocation> locations){
        this.locations = locations;
    } 
}

I am trying to retrieve this object from Firebase. The object is retrieved in the dataSnapshot, although it has a problem serializing to my User object.

This is how i am retrieving the object from Firebase:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child(users_group).child(user.getUid());
        ref.addListenerForSingleValueEvent(
            new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    User this_user = dataSnapshot.getValue(User.class); 
                }

                @Override
                public void onCancelled(DatabaseError databaseError) { }
            });

But when trying to do 'User this_user = dataSnapshot.getValue(User.class)' i get an error saying "User is missing a constructor with no arguments"

Any help would be great, thanks

解决方案

You must be getting this error because your User class is a sub class.

Solution:

Either mark your class static:

 public class SomeParentClass{ 

        public static class User {
            ....
        }
    }

or create it in a separate file.

这篇关于Firebase“用户缺少一个没有参数的构造函数”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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