Android - 获取基于子 Firebase 的推送 key

标签 android firebase nullpointerexception firebase-realtime-database

这是我的数据的样子:

{
  "courses":{
    "Business":{
        "PushKey_1":{
                "courseC":"B1111",
                "name":"Business Year 1"
        },
        "PushKey_2":{
                "courseC":"B2222",
                "name":"Business Year 2"
        },
    }
  }
}

我正在尝试检索基于 child 的推送 key 。我现在正在尝试的代码:

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);

我的CourseDetails 类:

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;
    }
}

textview1 应该显示 PushKey_2。如果代码错误,textview1 不应该显示“类(class)”吗?

我从上面的代码中得到了 NullPointerException。我已经阅读了文档并经历了类似的问题,但仍然错了。请不要介意我的愚蠢问题

最佳答案

我运行您的代码,但没有得到 NullPointerException。请发布堆栈跟踪。

我会指出看起来像是错误的地方。

这个:

showCourseKey = dataSnapshot.getKey();

应该是:

showCourseKey = ds.getKey();

关于Android - 获取基于子 Firebase 的推送 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38808970/

相关文章:

java - 运行时异常 : Unabel to instantiate activity ComponentInfo and NullPointerException

java - 尝试访问类时出现空指针异常

android - 如何更改 Cordova 相机插件选项

php - 如何通过 PHP 执行 Google Cloud Function?

java - Androidx ViewPager2 不兼容类型 : ViewPagerAdapter cannot be converted to Adapter

android - 从 Firebase 身份验证中检索用户列表

firebase - 如何向之前创建的文档添加字段?

java - 属性文件不会在静态代码中加载,出现 NullPointerException

android - 按钮出现在 android API 19 中,但不是 API 17

android - ADB 在 Mac OS X Mavericks 上找不到 Nexus 7