如果给定的Firebase参考不包含任何输入,我想关闭进度栏。如果给定的参考没有数据,则进度条将继续加载,如何解决此问题。我想关闭进度条,如果deliveryBoyReference.addChildEventListener(new ChildEventListener()..函数未调用recyclerView = output.findViewById(R.id.list_of_all_delivery_area_recyclerview); deliveryBoyItems = new ArrayList (); final ProgressDialog pd = new ProgressDialog(getContext()); pd.setMessage("loading"); pd.setCanceledOnTouchOutside(false); pd.show(); firebaseStorage=FirebaseDatabaseReference.getStorageINSTANCE(); storageReference=firebaseStorage.getReference("DeliveryBoyImage/"); firebaseDatabase = FirebaseDatabaseReference.getDatabaseInstance(); deliveryBoyReference = firebaseDatabase.getReference("DELIVERYBOY"); deliveryBoyReference.addChildEventListener(new ChildEventListener() { @Override public void onChildAdded(DataSnapshot dataSnapshot, String s) { DeliveryBoyReference deliveryBoyReference = dataSnapshot.getValue(DeliveryBoyReference.class); deliveryBoyItems.add(deliveryBoyReference); adapter.notifyDataSetChanged(); pd.dismiss(); } @Override public void onChildChanged(DataSnapshot dataSnapshot, String s) { Log.i("fail","fail"); } @Override public void onChildRemoved(DataSnapshot dataSnapshot) { Log.i("fail","fail"); } @Override public void onChildMoved(DataSnapshot dataSnapshot, String s) { } @Override public void onCancelled(DatabaseError databaseError) { Log.i("fail1","fail"); } }); (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 您不能使用ChildEventListener关闭进度条,因为onChildAdded方法仅在实际存在子对象时才调用。因此,如果您要关闭进度条,请添加一个可以触发的其他ValueEventListener:deliveryBoyReference.addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { pd.dismiss(); } @Override public void onCancelled(DatabaseError databaseError) { Log.i("fail1","fail"); }});这不会导致使用额外的带宽,因为Firebase实际上将仅在两个侦听器中检索一次数据。 (adsbygoogle = window.adsbygoogle || []).push({});