I can not "recover" the value of the Realtime Database (Firebase)

0

I'm trying this, but it always appears that the app has stopped working.

public class TesteActivity extends AppCompatActivity {

    private TextView la;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.teste);


        la = (TextView) findViewById(R.id.txtavisoteste);

        DatabaseReference dref = FirebaseDatabase.getInstance().getReference().child("usuario");

        dref.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                String value = dataSnapshot.getValue(String.class);
                la.setText(value);
            }

            @Override
            public void onCancelled(DatabaseError error) {
                Toast.makeText(TesteActivity.this, "Erro: " + error.toException(), Toast.LENGTH_SHORT).show();
            }
        });

    }
}
    
asked by anonymous 26.09.2018 / 03:16

1 answer

0

What amount do you want to get? There it will try to return the user value, however if it is null a NullPointerException can happen.

dref.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                final String value;
                if(dataSnapshot.getValue().toString != null){
                   value = dataSnapshot.getValue().toString();
                   //Eu prefiro usar assim ou String.valueOf(dataSnapshot.getValue());
                   //Mas lembre-se de que o valor gravado sempre sera uma string para evitar exceções futuras.
                } else { value = "String com valor nulo"; }
                la.setText(value);
            }
            @Override
            public void onCancelled(DatabaseError error) {
                Toast.makeText(TesteActivity.this, "Erro: " + error.getMessage(), Toast.LENGTH_SHORT).show();
                //Aqui também para ver o erro você poderia usar um log, acredito que fica melhor para ver o erro na hora de testar o app e tudo mais.
                //Log.i("TAG", error.getMessage()); 
            }
        });
    
29.09.2018 / 02:34