首页 > 解决方案 > 从 Firebase 数据库接收数字数据

问题描述

我想在 TextView 中显示分数的数值,但应用程序总是关闭。

这是我的代码

FirebaseDatabase database = FirebaseDatabase.getInstance();
        FirebaseUser currentFirebaseUser = FirebaseAuth.getInstance().getCurrentUser();
        DatabaseReference myRef = database.getReference("users").child(currentFirebaseUser.getUid());

        // Read from the database
        myRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                String valuePoints = dataSnapshot.child("current_points").getValue(String.class);
                mTextViewPoints = findViewById(R.id.current_points);
                mTextViewPoints.setText(valuePoints);
            }

            @Override
            public void onCancelled(DatabaseError error) {
                // Failed to read value
                // Log.w(TAG, "Failed to read value.", error.toException());
            }
        });
    }```

Other values that contain letters are numbers he displays, but when it comes only to numbers he closes.
Where am I going wrong?

标签: javaandroidfirebasefirebase-realtime-databasetextview

解决方案


亲爱的范德克林·罗查,

最初,TextView 不能在回调 ValueEventListener 中定义,您应该在视图启动时定义。

您的代码 textView 中的问题返回 null,您可以进行调试并查看它。这是当前获取数据并将其设置为 TextView 的方法。

FirebaseDatabase database = FirebaseDatabase.getInstance();
    FirebaseUser currentFirebaseUser = FirebaseAuth.getInstance().getCurrentUser();
    DatabaseReference myRef = database.getReference("users").child(currentFirebaseUser.getUid());

TextView mTextViewPoints = findViewById(R.id.current_points);

    // Read from the database
    myRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            String valuePoints = dataSnapshot.child("current_points").getValue(String.class);
            mTextViewPoints.setText(valuePoints);
        }

        @Override
        public void onCancelled(DatabaseError error) {
            // Failed to read value
            // Log.w(TAG, "Failed to read value.", error.toException());
        }
    });
}

我希望这可以帮助你


推荐阅读