我正在使用Firebase
Firestore,我想从数据库中删除数据。正在删除数据,但进度对话框卡住了。我认为我必须使用Worker线程,但我不知道如何使用。
db = FirebaseFirestore.getInstance();
db.collection("expenses").document(ids)
.delete()
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Toast.makeText(Expense_Summary.this, "successfully deleted file", Toast.LENGTH_SHORT).show();
result = "deleted";
hideProgressDialog();
finish();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.w("deleting f", "Error deleting document", e);
hideProgressDialog();
Toast.makeText(Expense_Summary.this, "Error deleting file", Toast.LENGTH_SHORT).show();
}
});
我引用了doc:
https://firebase.google.com/docs/firestore/manage-data/delete-data
最佳答案
尝试这个:
final ProgressDialog progressDialog = ProgressDialog.show(Activity_name_here.this,"Please wait","Processing",true);
Runnable runnable=new Runnable() {
@Override
public void run() {
progressDialog.cancel();
}
};
Handler pdCanceller = new Handler();
pdCanceller.postDelayed(runnable, 3000);
db = FirebaseFirestore.getInstance();
db.collection("expenses").document(ids)
.delete()
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Toast.makeText(Expense_Summary.this, "successfully deleted file", Toast.LENGTH_SHORT).show();
result = "deleted";
progressDialog.dismiss();
finish();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.w("deleting f", "Error deleting document", e);
progressDialog.dismiss();
Toast.makeText(Expense_Summary.this, "Error deleting file", Toast.LENGTH_SHORT).show();
}
});
使用进度代码上方的代码,将显示带有文本的对话框,请稍候,旁边正在写一个小圆圈。
这:
pdCanceller.postDelayed(runnable, 3000);
在这里指定时间示例,我使用3000毫秒。然后,如果成功,将关闭进度对话框。如果失败,进度对话框也将被关闭。