簡體   English   中英

Firebase數據庫:盡管存在錯誤,但仍出現“無參數構造函數”錯誤

[英]Firebase Database: Getting “No-Argument Constructor” Error Despite Having It

我試圖在一個活動中寫入數據,然后在另一個活動中讀取數據。 我的寫作部分正在工作。 對於我的閱讀部分,我試圖將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) {
        }
    });
}

例外情況是您的類為ozhan.climb.MainActivity$User即它是MainActivity的內部類。

內部類需要構造其外部類的實例。 盡管錯誤消息肯定可以得到改善,但這不適用於Firebase數據庫。

您的User類應該是一個static類,它沒有相同的要求僅在包含類的實例中存在:

static class User {
  ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM