即使未单击按钮,按钮onclick中的方法也会运行

时间:2017-03-29 13:32:57

标签: android firebase firebase-realtime-database

我试图在我的firebase数据库中删除或设置节点值为null,但我的onClick侦听器中的方法正在运行,而我没有按下按钮。

state = 0

1 个答案:

答案 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);
    ...

希望这有帮助