2017-12-19 19 views
0

私は使用していますFirebaseFirestore私はデータベースからデータを削除したいと思います。データを消すのはうまくいきますが、進捗ダイアログが固まってしまいます。私はワーカースレッドを使用する必要があると思いますが、使用方法はわかりません。UiはFirebase Firestoreを削除してデータを削除しましたか?

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参照さドキュメント: https://firebase.google.com/docs/firestore/manage-data/delete-data

答えて

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ミリ秒を使用している時間の例を示しています。それが成功すると、進捗ダイアログが消されます。または、失敗した場合は、進行状況ダイアログも閉じられます。

関連する問題