删除Firebase中的子项

时间:2018-04-09 22:29:26

标签: java android firebase firebase-realtime-database

我试图从我的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);

这是基础,突出显示的是我想要消除的内容: Database

我澄清说我已经尝试过使用setValue(null),但仍然会遇到同样的错误。

1 个答案:

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

如果没有,则删除