我想从 Firebase 的 ListView 中删除数据。
lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, final View view, final int position, long id) {
mDatabaseRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
DatabaseReference s =snapshot.getRef();
mDatabaseRef.child(String.valueOf(s)).removeValue();
}
}
应用程序在此行崩溃:mDatabaseRef.child(String.valueOf(s)).removeValue();
我还使用 setValue(null);
最佳答案
要真正从 Firebase 数据库中删除子项,您需要将 String
作为参数传递给 child()
方法,该 String
代表数据库中的键,位于特定位置。
snapshot.getRef()
实际上返回已附加监听器的位置的完整引用。
String.valueOf(s)
返回引用的 String
表示形式。为了删除一个值,您需要使用实际的字符串。
我们举个例子。您有以下路径:
Firebase-root/users/uid/name
其中 name 的值为 John
。为了删除名称
,您需要使用以下代码行:
FirebaseDatabase.getInstance().getReference()
.child("users")
.child("uid")
.child("name")
.removeValue();
而不是这行代码:
FirebaseDatabase.getInstance().getReference()
.child("users")
.child("uid")
.child("Firebase-root/users/uid/name")
.removeValue();
这就是您尝试使用代码执行的操作。
根据您的新更新,为了删除该记录,当您推送该随 secret 钥时,您需要首先将该 key 存储在如下变量中:
String key = yourRef.push().getKey(); //Store the pushed key
FirebaseDatabase.getInstance().getReference()
.child("Hamza")
.child(key)
.removeValue();
关于java - Android Firebase 删除删除值时崩溃的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47055366/