Java firebase数据库读取问题

Java firebase数据库读取问题,java,android,firebase-realtime-database,Java,Android,Firebase Realtime Database,我正在尝试从firebase Datasebase上的最后一个节点获取值 我见过一些解决方案,但没有一个对我有效 代码如下: setData = FirebaseDatabase.getInstance().getReference().child("Questions"); Query lastQuery = setData.orderByKey().limitToLast(1); lastQuery.addListen

我正在尝试从firebase Datasebase上的最后一个节点获取值

我见过一些解决方案,但没有一个对我有效

代码如下:

            setData = FirebaseDatabase.getInstance().getReference().child("Questions");

            Query lastQuery = setData.orderByKey().limitToLast(1);
            lastQuery.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {

                    if (dataSnapshot.hasChild("JSON_OBJ")) {
                        SubmitKey item = dataSnapshot.getValue(SubmitKey.class);
                        String key2 = item.getJSON_OBJ();

                    } else {
                        Snackbar.make(findViewById(R.id.QuestionLayout), "JSON_ObJ not found", Snackbar.LENGTH_LONG).show();
                    }

                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });
我的构造函数类

public class SubmitKey {

    private String JSON_OBJ;

    public SubmitKey() {
    }

    public SubmitKey(String JSON_OBJ) {
        this.JSON_OBJ = JSON_OBJ;
    }

    public String getJSON_OBJ() {
        return JSON_OBJ;
    }
}
它不会获取值,而是转到else语句并显示“JSON_OBJ not Found”

任何帮助都将不胜感激

编辑:我对代码做了一些更改,现在它显示了
在类submitKey上没有找到0-101的setter/字段
D/ViewRootImpl@5b51511[问题]:ViewPostIme指针0
D/ViewRootImpl@5b51511[问题]:ViewPostIme指针1


如果语句转到else语句,它也不会进入内部。当您对Firebase数据库执行查询时,可能会有多个结果。因此,快照包含这些结果的列表。即使只有一个结果,快照也将包含一个结果列表

您的
onDataChange
需要通过迭代
snapshot.getChildren()
来处理此列表:


请添加完整的堆栈跟踪?以及firebase结构标题为nullpointerexception,但您的问题是它转到else语句。。。这是哪一个?这是因为我添加了一个if语句,如果你不添加if-else语句,它会抛出nullpointer异常@cricket_007`找不到0-101的setter/field found`。。。必须定义类上的所有字段
lastQuery.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot snapshot) {
      for (DataSnapshot dataSnapshot: snapshot.getChildren()) {
        if (dataSnapshot.hasChild("JSON_OBJ")) {
            SubmitKey item = dataSnapshot.getValue(SubmitKey.class);
            String key2 = item.getJSON_OBJ();

        } else {
            Snackbar.make(findViewById(R.id.QuestionLayout), "JSON_ObJ not found", Snackbar.LENGTH_LONG).show();
        }
      }
    }