我必须从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
获得价值。
谢谢!
答案 0 :(得分:1)
一遍又一遍地删除
之所以发生这种情况,是因为您使用的是addValueEventListener
而不是addListenerForSingleValueEvent
。每当数据库中发生任何更改时,都会触发ValueEventListener
。因此,如果您从数据库中删除某些内容,您的onDataChange()
方法将再次触发。
要解决此问题,请更改:
currentUserDB.addValueEventListener(/* ... */);
到
currentUserDB.addListenerForSingleValueEvent(/* ... */);
从official documentation短语中查看:
addListenerForSingleValueEvent(ValueEventListener listener)-为该位置的数据中的单个更改添加一个侦听器。
和
addValueEventListener(ValueEventListener listener)-在此位置添加用于数据更改的侦听器。