Android-基于子Firebase获取按键

Android-基于子Firebase获取按键,android,firebase,nullpointerexception,firebase-realtime-database,Android,Firebase,Nullpointerexception,Firebase Realtime Database,我的数据是这样的: { "courses":{ "Business":{ "PushKey_1":{ "courseC":"B1111", "name":"Business Year 1" }, "PushKey_2":{ "courseC":"B2222", "name":"Business Year 2"

我的数据是这样的:

{
  "courses":{
    "Business":{
        "PushKey_1":{
                "courseC":"B1111",
                "name":"Business Year 1"
        },
        "PushKey_2":{
                "courseC":"B2222",
                "name":"Business Year 2"
        },
    }
  }
}
我正在尝试根据一个孩子检索按键。我正在尝试的代码:

String testCourseC = "B2222";
String showCourseKey;

        DatabaseReference mRef = FirebaseDatabase.getInstance().getReference().child("courses").child("Business");
        mRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                for (DataSnapshot ds : dataSnapshot.getChildren()){
                    CourseDetails data = ds.getValue(CourseDetails.class);
                    String compareC = data.getCourseC();
                    if (compareC.equals(testCourseC)){
                        showCourseKey = dataSnapshot.getKey();
                    }
                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

        textview1.setText(showCourseKey);
我的
课程详情
课程:

public class CourseDetails {
    private String courseC;
    private String name;

    public CourseDetails() {
    }

    public CourseDetails(String courseC, String name) {
        this.courseC = courseC;
        this.name = name;
    }

    public String getCourseC() {
        return courseC;
    }

    public void setCourseC(String courseC) {
        this.courseC = courseC;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
文本视图1应显示按键2。如果代码错误,textview1不应该显示“课程”吗


我从上面的代码中得到了NullPointerException。我已经阅读了文档,也遇到了类似的问题,但还是弄错了。请不要介意我愚蠢的问题

我运行了你的代码,没有得到
空点异常
。请发布堆栈跟踪

我将指出什么是错误

这:

应该是:

showCourseKey = ds.getKey();

我刚刚意识到,当我试图从数据库打印数据时,返回的是空白数据。我想这可能就是我得到
NullPointerException
的原因。请看我的另一个问题。谢谢
showCourseKey = ds.getKey();