【问题标题】:Firebase database error : Found conflicting getters for name: isAccessibilityFocusableFirebase 数据库错误:发现名称冲突的 getter:isAccessibilityFocusable
【发布时间】:2017-07-13 14:31:35
【问题描述】:

我收到此错误:

原因:com.google.firebase.database.DatabaseException:发现名称冲突的 getter:isAccessibilityFocusable

在尝试更新我的用户时。

User类是这样的

public class User {
@PrimaryKey
String userName;
String groupName;
int totalMoney;
boolean turn;
boolean hapyo;
boolean blind;
@Exclude
TextView textView;
@Exclude
Button bHapdiye,bChale,bShow,bHeram;

public Button getbHapdiye() {
    return bHapdiye;
}

public void setbHapdiye(Button bHapdiye) {
    this.bHapdiye = bHapdiye;
}

public Button getbChale() {
    return bChale;
}

public void setbChale(Button bChale) {
    this.bChale = bChale;
}

public Button getbShow() {
    return bShow;
}

public void setbShow(Button bShow) {
    this.bShow = bShow;
}

public Button getbHeram() {
    return bHeram;
}

public void setbHeram(Button bHeram) {
    this.bHeram = bHeram;
}

public TextView getTextView() {
    return textView;
}

public void setTextView(TextView textView) {
    this.textView = textView;
}

public boolean isBlind() {
    return blind;
}

public void setBlind(boolean blind) {
    this.blind = blind;
}


public boolean isHapyo() {
    return hapyo;
}

public void setHapyo(boolean hapyo) {
    this.hapyo = hapyo;
}

public boolean isTurn() {
    return turn;
}

public void setTurn(boolean turn) {
    this.turn = turn;

}

public String getUserName() {
    return userName;
}

public void setUserName(String userName) {
    this.userName = userName;
}

public String getGroupName() {
    return groupName;
}

public void setGroupName(String groupName) {
    this.groupName = groupName;
}

public int getTotalMoney() {
    return totalMoney;
}

public void setTotalMoney(int totalMoney) {
    this.totalMoney = totalMoney;
}
}

我正在尝试像这样更新用户

final User user1 = userList.get(0);
    user1.setTextView(tvUser1);
    user1.setbChale(bChaleP1);
    user1.setbHapdiye(bHapdiyeP1);
    user1.setbHeram(bHeramP1);
    user1.setbShow(bShowP1);
    user1.setTurn(true);
    setUsersTurn(user1.isTurn(),bHapdiyeP1,bChaleP1,bShowP1,bHeramP1);
    setTurnInFirebase(user1);

setTurnInFirebase方法是这样的

public void setTurnInFirebase(User user){
    myRef.child("users").setValue(user);
}

所以当我运行项目时,我得到了上面提到的错误。这可能是什么原因。谢谢你

【问题讨论】:

标签: android firebase firebase-realtime-database


【解决方案1】:

您的用户包含 TextView,这是 Firebase 无法序列化/反序列化的类。

要允许将类写入 Firebase 数据库,请确保它仅包含您创建的简单类型或对象的属性:所谓的 POJO - 普通旧 Java 对象。

或者,您可以通过注释排除不支持的属性(例如TextView):

@Exclude
public TextView getTextView() {
    return textView;
}

@Exclude
public void setTextView(TextView textView) {
    this.textView = textView;
}

【讨论】:

  • Frank:请注意,用户在textView 字段声明中有@Exclude。正如您的回答正确表明的那样,@Exclude 必须在 getter/setter 上。 @Exclude 的文档需要注意。 Upgrade Guide 包含一个在字段声明中带有 @Exclude 的示例。 documentation for @Exclude 声明 将字段标记为从数据库中排除,这是不明确的。
  • 啊,好点子!我在球场上忽略了它。它确实必须在 getter 和 setter 上。仅在一个地方需要它是一项开放的任务,但很难决定在哪里。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-24
  • 1970-01-01
相关资源
最近更新 更多