有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Ui strucking Firebase Firestore删除数据?

我正在使用FirebaseFirestore我想从数据库中删除数据。。删除数据工作正常,但我的进度对话框被阻塞。我想我必须使用工作线程,但我不知道如何使用

 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();
                        }
                    });

I Refered doc : https://firebase.google.com/docs/firestore/manage-data/delete-data


共 (1) 个答案

  1. # 1 楼答案

    试试这个:

     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毫秒的时间示例。如果成功,进度对话框将被取消。或者,如果失败,进度对话框也将被取消