我使用Firebase制作应用。我的数据存储结构是 -
我在另一个活动中呼叫主题和描述来展示它们。我在该活动中添加了一个按钮,用于删除上图中显示的特定键(-L6g7ttOxr ...突出显示部分)数据。我成功地在特定列表项的第二个活动中获得了该密钥以提供数据库参考。
public void deleteCurrentMemo(){
AlertDialog.Builder alert = new AlertDialog.Builder(
DisplayMemo.this);
alert.setTitle("Delete Memo");
alert.setMessage("Are you sure you want delete current Memo?");
Toast.makeText(this,key,Toast.LENGTH_SHORT).show();
alert.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
mFirebaseDatabase = FirebaseDatabase.getInstance();
mMemoDatabaseReference = mFirebaseDatabase.getReference().child("memos").child(key);
mMemoDatabaseReference.removeValue();
finish();
}
});
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
alert.show();
}
上面的代码是在删除按钮上调用的第二个活动。现在我该如何删除完整的密钥数据?
答案 0 :(得分:0)
您需要将备忘录的密钥传递给第二个活动。
通常这很简单,因为您在从Firebase读取数据时已经获得了密钥。只需传递主题并订阅第二个活动,然后传递到deleteCurrentMemo
。
答案 1 :(得分:0)
通过这种方式,我已经成功删除了子节点。
N:B您必须需要要删除的节点的密钥。
database.getReference().child("Groups").child(groupItem.getGroupkey()).removeValue().addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
new CustomMessage(GroupDetailsActivity.this, "Successfully deleted");
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Customlog.showlogD("ERROR_MSG",e.getMessage());
}
})
;