【发布时间】:2022-01-31 21:35:50
【问题描述】:
我正在开发一个应用程序,但我遇到了问题。我开始记录 GPS 位置,但数据开始太多。所以我实现了一个按钮来取消任何在“位置”下(或在“纬度”和“经度”下,对我来说都是一样的)。问题是似乎没有任何东西被取消到数据库中。 我面临这个问题 2 天,我被卡住了。这是我的数据库:
这是我使用的代码:
public class GalleryFragment extends Fragment {
private GalleryViewModel galleryViewModel;
private FragmentGalleryBinding binding;
DatabaseReference mbase;
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
galleryViewModel =
new ViewModelProvider(this).get(GalleryViewModel.class);
binding = FragmentGalleryBinding.inflate(inflater, container, false);
View root = binding.getRoot();
EditText ET = binding.EditProva;
Button btn = binding.buttonProva;
FirebaseDatabase database = FirebaseDatabase.getInstance();
mbase = FirebaseDatabase.getInstance().getReference();
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DatabaseReference drTest = FirebaseDatabase.getInstance().getReference();
drTest.child("Location").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for(DataSnapshot dataSnapshot:snapshot.getChildren()){
dataSnapshot.getRef().setValue(null);
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
Log.w("Errore DB: ", error.getMessage());
}
});
}
});
galleryViewModel.getText().observe(getViewLifecycleOwner(), new Observer<String>() {
@Override
public void onChanged(@Nullable String s) {
//textView.setText(s);
}
});
return root;
}
@Override
public void onDestroyView() {
super.onDestroyView();
binding = null;
}
}
在此解决方案之前,我在 :
中使用了该代码 DatabaseReference latRef = database.getReference("Location/latitude");
latRef.removeValue();
DatabaseReference longRef = database.getReference("Location/longitude");
longRef.removeValue();
但这也不起作用。我检查了其他答案,但没有任何帮助。
【问题讨论】:
-
我不确定我是否理解。您究竟想取消什么?
Location内的孩子是否需要一一移除? -
我想删除“位置”下的任何内容。我更喜欢一次性删除它们(请参阅我在帖子末尾报告的另一种解决方案),但考虑到没有任何效果,我试图一个一个地删除它们。代码有点混乱,因为我正在尝试不同的方式。无论如何,任何取消数据的解决方案都可以
-
您是否尝试将侦听器附加到
.setValue(null)操作以查看是否有问题? -
我尝试调试活动。似乎这部分代码从未被调用过
-
是否调用了 onDataChange 或 onCancelled 中的任何一个?
标签: java android firebase firebase-realtime-database google-cloud-platform