gpt4 book ai didi

android - 从 Firebase 检索数据以创建要在数据库中编辑的地址

转载 作者:行者123 更新时间:2023-11-30 00:11:28 25 4
gpt4 key购买 nike

所以,这就是我的 Firebase 数据库的样子:

enter image description here

我目前正在尝试读取 UserInformation/Shift/zTZ0U1K8aGb6bP94YTUA50ZwIlx2/Shift 的值,以便将 ShiftInformation/1514855312873/Team/zTZ0U1K8aGb6bP94YTUA50ZwIlx2 的值设置为空。

当我按下按钮“buttonMyShift”时,我需要读取值“1514855312873”,因为它是从 System.getCurrentTimeMillis() 生成的。我一直试图通过更改“onDataChange”方法中的值来实现这一点,但应用程序崩溃或仅删除 UserInformation/Shift。

这是我的 Activity 代码:

        if (view == buttonMyShift){
final FirebaseUser user = mAuth.getCurrentUser();
final FirebaseDatabase database = FirebaseDatabase.getInstance();
databaseReference = database.getReference("UserInformation/Shift/").child(user.getUid()).child("Shift");

databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
//Read the value of UserInformation/Shift/user.getUid()/Shift
SHIFT uShift = dataSnapshot.getValue(SHIFT.class);

//Setting the value of userShift to UserInformation/Shift/user.getUid()/Shift
String userShift = uShift.toString().trim();

//Setting the value of ShiftInformation/userShift/Team/user.getUid() to null
mReference = database.getReference("ShiftInformation").child(userShift).child("Team").child(user.getUid());
mReference.setValue(null);


}
}
@Override
public void onCancelled(DatabaseError databaseError) {
System.out.println("The read failed: " + databaseError.getCode());
}
});

//set UserInformation/Shift/user.getUid to null
SHIFT nshift = new SHIFT(null);
databaseReference.setValue(nshift);

Toast.makeText(MainMenuActivity.this,"Adeus!",Toast.LENGTH_SHORT).show();

//leave the activity

Intent intent = new Intent(MainMenuActivity.this,BadgeActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
finish();
startActivity(intent);
}

感谢您的帮助!

最佳答案

要获取 Shift 字段的值,即 1514855312873,请使用以下代码:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference shiftRef = rootRef.child("UserInformation").child("Shift").child(user.getUid()).child("Shift");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String shift = dataSnapshot.getValue(String.class);
Log.d("TAG", shift);
}

@Override
public void onCancelled(DatabaseError databaseError) {}
};
shiftRef.addListenerForSingleValueEvent(eventListener);

输出将是:

1514855312873

您的 DatabaseReference 是正确的,但您的代码中的问题是您在不需要时使用了 getChildren() 方法。

关于android - 从 Firebase 检索数据以创建要在数据库中编辑的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48067736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com