我试图在我的firebase数据库中删除或设置节点值为null,但我的onClick侦听器中的方法正在运行,而我没有按下按钮。
state = 0
答案 0 :(得分:1)
如果您只想更改/修改数据,那么仅setValue()
就足够了。您无需附加addValueEventListener
。像这样:
public void onClick(View v) {
database.getReference("Orders").child(user_id).child).child("Session").setValue(null);
}
其他信息(如果应用于相关代码,可能无效,但此信息可能有用)
如果您还想在提交任何更改之前首先读取该值(例如确认if是否为true,则将其更改为false,否则),那么您应该考虑使用addListenerForSingleValueEvent
而不是addValueEventListener
。因为它只执行一次代码,而后者继续监听在删除/分离侦听器之前发生的任何数据更改。在这种情况下,你应该这样做:
@Override
public void onClick(View v) {
DatabaseReference myRef = database.getReference("Orders").child(user_id);
myRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.getValue(Boolean.class)) {
// if value is true, change data
myRef.setValue(false);
...
希望这有帮助