Ajuda em erro na execução

Boa noite,
Estou tendo dificuldades em fazer a correção de um código que tenho.
É um aplicativo que faz login, cadastro e consulta no firebase. Iniciante no desenvolvimento disso

Parte de cadastro, esta funcionado, mas quando vou fazer o login do email e a senha que criei, ele apresenta o erro abaixo:

Quando eu clico no texto em azul ele me joga para a linha 58, 22 e 48

O código da tela está abaixo:

package com.example.sistema;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;

import modelo.Usuario;

public class Login extends AppCompatActivity {


    private EditText editNome;
    private EditText editEmail;
    private EditText editSenha;
    private Button btLogin;
    private FirebaseAuth mAuth;
    private Usuario u;

    @SuppressLint("MissingInflatedId")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        mAuth = FirebaseAuth.getInstance();

        editEmail = findViewById(R.id.editEmail);
        editSenha = findViewById(R.id.editSenha);
        btLogin = findViewById(R.id.btLogin);

        btLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                login();
                receberDados();
            }
        });


    }

    private void login() {

        mAuth.signInWithEmailAndPassword(u.getEmail(), u.getSenha())
                .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (task.isSuccessful()) {
                            // Sign in success, update UI with the signed-in user's information
                            FirebaseUser user = mAuth.getCurrentUser();
                            startActivity(new Intent(Login.this, TelaPrincipal.class));
                        } else {
                            // If sign in fails, display a message to the user.
                            Toast.makeText(Login.this, "Autenticação falhou.",
                                    Toast.LENGTH_SHORT).show();
                        }
                    }
                });


    }

    private void receberDados() {
        u = new Usuario();
        u.setEmail(editEmail.getText().toString());
        u.setSenha(editSenha.getText().toString());


    }
}

NullPointerException amigo. Está chamando método de um objeto ainda não instanciado. Olha seu metodo login()

Olha kkk, posso estar muito cego, mais não vejo onde alterar

O objeto u não foi inicializado, por isso dá erro ao chamar o método getEmail().

1° importante realizar tratamento de erros utilizando try e catch precisamos saber ser usuário digitou

btLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
try{

login();

}catch(Exception e){

e.Toast.makeText(“Autenticação falhou.”,
Toast.LENGTH_SHORT).show());

}

            receberDados();
        }
    });
1 curtida

Você inicializa o objeto u no método receberDados, mas você está tentando utilizar o objeto u no método login.

Tem que chamar o receberDados antes do login.

1 curtida

Só mudei a ordem e deu certo hehe, as vezes ta na cara, obrigado

Interessante, tentei aqui mas deu alguns erros, vou tentar tratar pra ver como da o andamento do aplicativo, obrigado pela ideia