我试图从我的firebase数据库中删除一个孩子,但问题是它给了我一个错误:
public class Editar_atleta extends AppCompatActivity {
EditText nombre,fecha,categoria,correo, celular;
Button editar, eliminar;
String key, entrenador;
private DatabaseReference database;
private Task<Void> data;
private static final String CERO = "0";
private static final String BARRA = "-";
public final Calendar c = Calendar.getInstance();
final int mes = c.get(Calendar.MONTH);
final int dia = c.get(Calendar.DAY_OF_MONTH);
final int anio = c.get(Calendar.YEAR);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_editar_atleta);
final Intent intent = getIntent();
key=intent.getStringExtra("llave");
SharedPreferences preferences = getSharedPreferences("ingreso", Context.MODE_PRIVATE);
entrenador = preferences.getString("login", "");
nombre=(EditText)findViewById(R.id.txt_nom_editar);
fecha=(EditText) findViewById(R.id.txt_fecha_editar);
categoria=(EditText)findViewById(R.id.txt_categoria);
correo=(EditText) findViewById(R.id.txt_correo_editar);
celular=(EditText) findViewById(R.id.txt_cel_editar);
editar=(Button)findViewById(R.id.btn_editar);
eliminar=(Button)findViewById(R.id.btn_eliminar);
llenardatos();
fecha.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
obtenerFecha();
}
});
editar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
cargardatos();
}
});
eliminar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
eliminar_base();
}
});
}
private void llenardatos() {
database = FirebaseDatabase.getInstance().getReference().child(entrenador).child(FirebaseReferences.DEPORTISTA_REF).child(key);
database.addValueEventListener (new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Editar editar= dataSnapshot.getValue(Editar.class);
nombre.setText(editar.full_name);
fecha.setText(editar.date_of_birth);
categoria.setText(editar.category);
celular.setText(editar.phone);
correo.setText(editar.email);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
private void obtenerFecha(){
DatePickerDialog recogerFecha = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
final int mesActual = month + 1;
String diaFormateado = (dayOfMonth < 10)? CERO + String.valueOf(dayOfMonth):String.valueOf(dayOfMonth);
String mesFormateado = (mesActual < 10)? CERO + String.valueOf(mesActual):String.valueOf(mesActual);
fecha.setText(diaFormateado + BARRA + mesFormateado + BARRA + year);
}
},anio, mes, dia);
recogerFecha.show();
}
private void cargardatos(){
}
private void eliminar_base(){
data = FirebaseDatabase.getInstance().getReference().child(entrenador).child(FirebaseReferences.DEPORTISTA_REF).child(key).removeValue();
}
}
密钥已删除但应用程序已关闭。
这是我用来删除的代码:
gl.glEnable(GL2.GL_FOG);
gl.glFogi(GL2.GL_FOG_MODE,GL2.GL_LINEAR);
gl.glFogi(GL2.GL_FOG_START,(int)1);
gl.glFogi(GL2.GL_FOG_END,(int)5);
我澄清说我已经尝试过使用setValue(null),但仍然会遇到同样的错误。
答案 0 :(得分:0)
删除前,请检查节点是否为空:
if(!FirebaseDatabase.getInstance().getReference().child(entrenador).child(FirebaseReferences.DEPORTISTA_REF).child(key).empty()) {
data = FirebaseDatabase.getInstance().getReference().child(entrenador).child(FirebaseReferences.DEPORTISTA_REF).child(key).removeValue();
}
如果没有,则删除