Firebase Android读取数据->处理->更新数据“全局变量问题”

时间:2019-01-08 15:22:47

标签: java android firebase firebase-realtime-database

我必须从Firebase中获取数据并删除一些值,然后将数据保存到Fb。这是我的“活动”中的读取功能:

 private void readData() {
    mAuth = FirebaseAuth.getInstance();
    DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference().child("users");
    DatabaseReference currentUserDB = mDatabase.child(mAuth.getCurrentUser().getUid());
    currentUserDB.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            Map<String,Object> map = (Map)dataSnapshot.getValue();
             kwotaKonta= ((String)map.get("account"));

当我在“ onDataChange”中进行所有操作时,一遍又一遍地删除 我试图创建名为“ kwotaKonta”的全局变量,并将其设置为onCreate,但是当函数结束时,“ kwotaKonta”为null。请帮助我如何从onDataChange获得价值。

谢谢!

1 个答案:

答案 0 :(得分:1)

  

一遍又一遍地删除

之所以发生这种情况,是因为您使用的是addValueEventListener而不是addListenerForSingleValueEvent。每当数据库中发生任何更改时,都会触发ValueEventListener。因此,如果您从数据库中删除某些内容,您的onDataChange()方法将再次触发。

要解决此问题,请更改:

currentUserDB.addValueEventListener(/* ... */);

currentUserDB.addListenerForSingleValueEvent(/* ... */);

official documentation短语中查看:

  

addListenerForSingleValueEvent(ValueEventListener listener)-为该位置的数据中的单个更改添加一个侦听器。

  

addValueEventListener(ValueEventListener listener)-在此位置添加用于数据更改的侦听器。