2016-11-25 55 views
0

我尝试使用removeValue()从我的FirebaseDatabase中删除节点,但它不起作用。奇怪的是,当我在Recyclerview中删除节点时,节点已成功删除。无法使用removeValue()从FirebaseDatabase中删除节点

我使用下面的代码在新的活动中通过recyclerview的onClick中的ref。在您的按钮

 final DatabaseReference itemRef = getRef(position); 
      viewHolder.mView.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
       // itemRef.removeValue(); 
        Intent intentshowall2one= new Intent(Showcase.this, ShowProduct.class); 
        intentshowall2one.putExtra("S2Skey", itemRef.toString()); 
        Showcase.this.startActivity(intentshowall2one); 

,并在其他活动

key = myIntent.getStringExtra("S2Skey"); 
    DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReferenceFromUrl(key); 
mDatabase.removeValue().addOnSuccessListener(new OnSuccessListener<Void>() { 
    @Override 
     public void onSuccess(Void aVoid) { 
     Toast.makeText(getApplicationContext(), "deleted ", Toast.LENGTH_SHORT) 
            .show(); 

      } 
     }).addOnFailureListener(new OnFailureListener() { 
      @Override 
      public void onFailure(@NonNull Exception exception) { 
       // Uh-oh, an error occurred! 
      Toast.makeText(getApplicationContext(), "error", Toast.LENGTH_SHORT) 
       .show(); 
       } 
     }); 

回答

0

感谢您的回答Lutaaya Huzaifah Idris和Vignesh Kumar.I发现这个错误是因为我在我的路径中使用了希腊文的单词。一切都很好,上传下载并用希腊字查询参考文献,但是当我传递参考文献给裁判改变的其他活动。这也很奇怪。

0

尝试了这一点或任何监听器:

 mDatabase.child(key).removeValue(); 
      Toast.makeText(getApplicationContext(),"The Post has been removed Successfully ",Toast.LENGTH_LONG).show(); 

或使用该

mDatabase.chlid(key).removeValue().addOnSuccessListener(new OnSuccessListener<Void>() { 
     @Override 
      public void onSuccess(Void aVoid) { 
      Toast.makeText(getApplicationContext(), "deleted ", Toast.LENGTH_SHORT) 
             .show(); 

       } 
      }).addOnFailureListener(new OnFailureListener() { 
       @Override 
       public void onFailure(@NonNull Exception exception) { 
        // Uh-oh, an error occurred! 
       Toast.makeText(getApplicationContext(), "error", Toast.LENGTH_SHORT) 
        .show(); 
        } 
      }); 

相反的:

mDatabase.removeValue().addOnSuccessListener(new OnSuccessListener<Void>() { 
    @Override 
     public void onSuccess(Void aVoid) { 
     Toast.makeText(getApplicationContext(), "deleted ", Toast.LENGTH_SHORT) 
            .show(); 

      } 
     }).addOnFailureListener(new OnFailureListener() { 
      @Override 
      public void onFailure(@NonNull Exception exception) { 
       // Uh-oh, an error occurred! 
      Toast.makeText(getApplicationContext(), "error", Toast.LENGTH_SHORT) 
       .show(); 
       } 
     }); 

希望它为你工作

0

确保您已给予适当引用删除值之前。那么,

您可以使用Completion监听器代替OnSuccessListener,Completion监听器会给出准确的结果。