Boa Tarde! estou com uma dificuldade pois meu LogCat está apresentando o seguinte erro :
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Double model.Usuario.getDespesaTotal()' on a null object reference
não estou entendendo pois pra mim faz sentido … segue meu codigo abaixo:
Despesa.Activity
package com.novoandroid.organizze.activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.textfield.TextInputEditText;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.ValueEventListener;
import com.novoandroid.organizze.R;
import config.ConfiguracaoFirebase;
import helper.Base64Custom;
import helper.DataCustom;
import model.Movimentacao;
import model.Usuario;
public class DespesaActivity extends AppCompatActivity {
private TextInputEditText editData;
private TextInputEditText editCategoria;
private TextInputEditText editSalarioMensal;
private TextInputEditText editDescricao;
private EditText editValor;
private DatabaseReference firebaseRef = ConfiguracaoFirebase.getFirebaseDataBase();
private FirebaseAuth autenticacao = ConfiguracaoFirebase.getFirebaseAutenticacao();
private FloatingActionButton adicionarDespesa;
private Double despesaTotal;
private Double despesaGerada;
private Double despesaAtualizada;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_despesa);
editValor = findViewById(R.id.editValor);
editData = findViewById(R.id.editData);
editCategoria = findViewById(R.id.editCategoria);
editSalarioMensal = findViewById(R.id.editSalarioMensal);
adicionarDespesa = findViewById(R.id.adicionarDespesa);
editDescricao = findViewById(R.id.editDescricao);
editData.setText(DataCustom.dataAtual());
recuperarDespesaTotal();
}
public void salvarDespesa(View view) {
if (validarCampos()) {
Movimentacao movimentacao = new Movimentacao();
String data = editData.getEditableText().toString();
movimentacao.setData(data);
Double valorRecuperado = Double.parseDouble(editValor.getEditableText().toString());
movimentacao.setValor(valorRecuperado);
movimentacao.setCategoria(editCategoria.getEditableText().toString());
movimentacao.setDescricao(editDescricao.getText().toString());
movimentacao.setTipo("d");
movimentacao.salvar(data);
despesaGerada = valorRecuperado;
despesaTotal = despesaGerada + despesaTotal;
}
}
public Boolean validarCampos() {
String cpoCategoria = editCategoria.getEditableText().toString();
String cpoSalario = editSalarioMensal.getEditableText().toString();
String cpoDescricao = editDescricao.getEditableText().toString();
String cpoData = editData.getEditableText().toString();
if (!cpoCategoria.isEmpty()) {
if (!cpoSalario.isEmpty()) {
if (!cpoDescricao.isEmpty()) {
if (!cpoData.isEmpty()) {
return true;
} else {
Toast.makeText(DespesaActivity.this, "Preencha o campo Data", Toast.LENGTH_SHORT).show();
return false;
}
} else {
Toast.makeText(DespesaActivity.this, "Preencha o campo Descricao", Toast.LENGTH_SHORT).show();
return false;
}
} else {
Toast.makeText(DespesaActivity.this, "Preencha o campo Salario", Toast.LENGTH_SHORT).show();
return false;
}
} else {
Toast.makeText(DespesaActivity.this, "Preencha o campo Categoria", Toast.LENGTH_SHORT).show();
return false;
}
}
public void recuperarDespesaTotal() {
String emailUsuario = autenticacao.getCurrentUser().getEmail();
String idUsuario = Base64Custom.decodificarBase64(emailUsuario);
DatabaseReference usuarioRef = firebaseRef.child("usuarios").child(idUsuario);
usuarioRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
Usuario usuario = snapshot.getValue(Usuario.class);
despesaTotal = usuario.getDespesaTotal();
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
public void atualizarDespesa(Double despesa){
String emailUsuario = autenticacao.getCurrentUser().getEmail();
String idUsuario = Base64Custom.decodificarBase64(emailUsuario);
DatabaseReference usuarioRef = firebaseRef.child("usuarios").child(idUsuario);
usuarioRef.child("despesaTotal").setValue(despesa);
}
Usuario.class
package model;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.Exclude;
import config.ConfiguracaoFirebase;
public class Usuario {
private String idUsuario;
private String nome;
private String email;
private String senha;
private Double receitaTotal = 0.00;
private Double despesaTota = 0.00;
public Usuario(String nome, String email, String senha) {
this.nome = nome;
this.email = email;
this.senha = senha;
}
public Usuario(){
}
public void salvar(){
DatabaseReference firebase = ConfiguracaoFirebase.getFirebaseDataBase();
firebase.child("usuarios")
.child(this.idUsuario)
.setValue(this);
}
public Double getReceitaTotal() {
return receitaTotal;
}
public void setReceitaTotal(Double receitaTotal) {
this.receitaTotal = receitaTotal;
}
public Double getDespesaTotal() {
return despesaTotal;
}
public void setDespesaTotal(Double despesaTotal) {
this.despesaTotal = despesaTotal;
}
@Exclude
public String getIdUsuario() {
return idUsuario;
}
public void setIdUsuario(String idUsuario) {
this.idUsuario = idUsuario;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Exclude
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
}
LogCat
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.novoandroid.organizze, PID: 19718
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Double model.Usuario.getDespesaTotal()' on a null object reference
at com.novoandroid.organizze.activity.DespesaActivity$1.onDataChange(DespesaActivity.java:133)
at com.google.firebase.database.core.ValueEventRegistration.fireEvent(ValueEventRegistration.java:75)
at com.google.firebase.database.core.view.DataEvent.fire(DataEvent.java:63)
at com.google.firebase.database.core.view.EventRaiser$1.run(EventRaiser.java:55)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6543)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:440)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:810)
Minhas Regras no FireBase está ok