Firebase 数据库:尽管有“无参数构造函数”错误

我试图在一个活动中写入数据,然后在另一个活动中读取它。我的写作部分正在工作。对于我的阅读部分,我试图将 getValue 与我编写的类的参数一起使用。但我不断收到此错误:


com.google.firebase.database.DatabaseException: ozhan.climb.MainActivity$User 类未定义无参数构造函数。如果您使用 ProGuard,请确保这些构造函数没有被剥离。


我在getValue()中使用的类:


class User {

    public String  Server,

            NeededRole,

            Role,

            SummonerName;


    User() {}


    public String get_Server() {

        return Server;

    }


    public String get_NeededRole() {

        return NeededRole;

    }


    public String get_Role() {

        return Role;

    }


    public String get_SummonerName() {

        return SummonerName;

    }

}

这是应该获取数据的代码:


public void getUserData(){

    final TextView tv_sumName = findViewById(R.id.tv_sumName),

             tv_neededRole = findViewById(R.id.tv_neededrole),

             tv_userRole = findViewById(R.id.tv_userrole),

             tv_server = findViewById(R.id.tv_server);

    final String uid = Objects.requireNonNull(mAuth.getCurrentUser()).getUid();


    DatabaseReference usersDataRef = databaseRef.child("Users").child(uid);

    usersDataRef.addValueEventListener(new ValueEventListener() {

        @Override

        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

            User u = dataSnapshot.getValue(User.class);

            if (u != null) {

                tv_server.setText(u.Server);

                tv_neededRole.setText(u.NeededRole);

                tv_userRole.setText(u.Role);

                tv_sumName.setText(u.SummonerName);

            }

        }

        @Override

        public void onCancelled(@NonNull DatabaseError databaseError) {

        }

    });

}


慕森卡
浏览 111回答 1
1回答

慕的地6264312

异常表示您的类是ozhan.climb.MainActivity$User- 即,它是MainActivity.内部类需要一个外部类的实例来构造。这不适用于 Firebase 数据库,尽管错误消息肯定可以改进。您的 User 类应该是一个static类,它没有相同的要求只存在于包含类的实例中:static class User {  ...}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java