You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android Studio中通过Firebase将值从false改为true并保存

修正后的Firebase节点修改代码

你的代码存在两个关键问题:

  • 路径冗余:databaseReference已经指向CurrentUser/{uid}/MyOrder,后续又追加child(firebaseUser.getUid())会导致路径错误,变成CurrentUser/{uid}/MyOrder/{uid}
  • 空节点指定:child("")没有指向任何有效节点,必须明确要修改的目标节点键名

场景1:直接修改MyOrder节点的值(假设该节点本身是布尔类型)

如果CurrentUser/{uid}/MyOrder就是你要修改的目标节点,直接对databaseReference调用setValue即可,注意用布尔值true而非字符串(如果原数据是布尔型false):

databaseReference = FirebaseDatabase.getInstance().getReference("CurrentUser")
        .child(firebaseUser.getUid())
        .child("MyOrder");

databaseReference.setValue(true).addOnCompleteListener(new OnCompleteListener<Void>() {
    @Override
    public void onComplete(@NonNull Task<Void> task) {
        if (task.isSuccessful()) {
            // 修改成功,可添加提示或日志
            Log.d("Firebase", "节点值修改成功");
        } else {
            // 修改失败,打印错误信息
            Log.e("Firebase", "修改失败", task.getException());
        }
    }
});

场景2:修改MyOrder下的子节点(比如目标节点是MyOrder/isCompleted)

如果要修改的是MyOrder下的某个具体子节点,需要明确指定子节点的键名:

databaseReference = FirebaseDatabase.getInstance().getReference("CurrentUser")
        .child(firebaseUser.getUid())
        .child("MyOrder");

// 替换"isCompleted"为你实际要修改的子节点键名
databaseReference.child("isCompleted").setValue(true).addOnCompleteListener(new OnCompleteListener<Void>() {
    @Override
    public void onComplete(@NonNull Task<Void> task) {
        if (task.isSuccessful()) {
            Log.d("Firebase", "子节点值修改成功");
        } else {
            Log.e("Firebase", "修改失败", task.getException());
        }
    }
});

注意事项

  • 确保Firebase数据库规则允许该操作(比如读写权限配置正确)
  • 如果原节点值是字符串类型的"false",则setValue时传入"true"(字符串)而非布尔值

内容的提问来源于stack exchange,提问作者kyu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 10:55:25