Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为什么我能';t使用模型类设置数据库中特定子级的值?_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Android 为什么我能';t使用模型类设置数据库中特定子级的值?

Android 为什么我能';t使用模型类设置数据库中特定子级的值?,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,这是一个消息模型类 public class MessModel { String message; public MessModel() {} public MessModel(String message) { this.message = message; } public String getMessage() { return message; } public void setMessage

这是一个消息模型类

public class MessModel {
    String message;
    public MessModel() {}

    public MessModel(String message) {
        this.message = message;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}
我试图使用setter方法更新消息键的特定值(最后一个值)

这是我的密码

Query lastmess = FirebaseDatabase.getInstance().getReference("Messages").child(my_Id).child(sendUID);
lastmess.orderByKey().limitToLast(1).addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataa) {
        for (DataSnapshot snap : dataa.getChildren()) {
            MessModel messages = snap.getValue(MessModel.class);
            String mes = messages.getMessage(); //here I can get the last message
            messages.setMessage("updated Message"); //here is the problem , why it doesn't work ?
        }
    }

    @Override
        public void onCancelled(DatabaseError databaseError) {
    }
});
我不知道为什么setter方法不起作用?
什么是设定所有孩子价值的最佳方式?或设置特定值?

要解决此问题,请使用以下代码:

Query lastmess = FirebaseDatabase.getInstance().getReference("Messages").child(my_Id).child(sendUID);
lastmess.orderByKey().limitToLast(1).addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataa) {
        for (DataSnapshot snap : dataa.getChildren()) {
            MessModel messages = snap.getValue(MessModel.class);
            String mes = messages.getMessage(); //here I can get the last message
            messages.setMessage("updated Message");
            snap.getRef().setValue(messages);
        }
    }

    @Override
        public void onCancelled(DatabaseError databaseError) {
    }
});
使用String类可以更简单地完成此操作:

Query lastmess = FirebaseDatabase.getInstance().getReference("Messages").child(my_Id).child(sendUID);
lastmess.orderByKey().limitToLast(1).addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataa) {
        for (DataSnapshot snap : dataa.getChildren()) {
            snap.child("message").getRef().setValue(updated Message);
        }
    }

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

你的代码没有在我能看到的任何地方调用
setValue()
。那么我可以在哪里调用它呢?如何使用setter方法?很抱歉,我还是Firebase的初学者。谢谢您的帮助,第二个解决方案运行良好。。但是第一个不起作用。。“lastmess.setValue(消息)中无法使用setValue;”我投了赞成票,但很抱歉,在我找到我的主要问题的答案之前,我不能接受它作为正确答案:如何使用模型类设置值?我的意思是使用setter方法!使用我的第一个解决方案时出现了什么错误?代码的工作方式应该与第二个相同。我不能在这里使用setValue
lastmesss.setValue(消息)它以红色显示,显示无法解析方法“setValue”,我理解。请看我的最新答案。现在能用了吗?