Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

erro: has no zero argument constructor

Ola pessoal, estou recebendo o seguinte erro:

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.agenda/com.example.agenda.ui.activity.FormularioAlunoActivity}: java.lang.InstantiationException: java.lang.Class<com.example.agenda.ui.activity.FormularioAlunoActivity> has no zero argument constructor

formularioAlunoActivity.java esta assim:

package com.example.agenda.ui.activity;

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

import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;

import com.example.agenda.R;
import com.example.agenda.dao.AlunoDao;
import com.example.agenda.modelo.Aluno;

public class FormularioAlunoActivity extends AppCompatActivity {

    public static final String TITULO_APPBAR = "NovoAluno";
    private EditText campoNome;
    private EditText campoTelefone;
    private EditText campoEmail;
    private final AlunoDao dao = new AlunoDao();
    private Aluno aluno;

    public FormularioAlunoActivity(EditText campoNome, EditText campoTelefone, EditText campoEmail) {
        this.campoNome = campoNome;
        this.campoTelefone = campoTelefone;
        this.campoEmail = campoEmail;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        setContentView(R.layout.activity_formulario_aluno);
        super.onCreate(savedInstanceState);
        setTitle(TITULO_APPBAR);
        inicializacaoDosCampos();
        configuraBotaoSalvar();

        Intent dados = getIntent();
        if (dados.hasExtra("aluno")) {
            aluno = (Aluno) dados.getSerializableExtra("aluno");
            campoNome.setText(aluno.getNome());
            campoTelefone.setText(aluno.getTelefone());
            campoEmail.setText(aluno.getEmail());
        } else {
            aluno = new Aluno();
        }

    }

    private void configuraBotaoSalvar() {
        Button botaoSalvar = findViewById(R.id.activity_formulario_aluno_botao_salvar);
        botaoSalvar.setOnClickListener((view) -> {
            preencheAluno();
            if (aluno.temIdValido()) {
                dao.edita(aluno);
            } else {
                dao.salvar(aluno);
            }
            finish();
        });
    }

    private void inicializacaoDosCampos() {
        campoNome = findViewById(R.id.activity_formulario_aluno_nome);
        campoTelefone = findViewById(R.id.activity_formulario_aluno_telefone);
        campoEmail = findViewById(R.id.activity_formulario_aluno_email);
    }


    private void preencheAluno() {
        String nome = campoNome.getText().toString();
        String telefone = campoTelefone.getText().toString();
        String email = campoEmail.getText().toString();

        aluno.setNome(nome);
        aluno.setTelefone(telefone);
        aluno.setEmail(email);
    }

E a Aluno.java esta assim:

package com.example.agenda.modelo;

import java.io.Serializable;

public class Aluno implements Serializable {
    private int id = 0;
    private String nome;
    private String telefone;
    private String email;


    public Aluno(String nome, String telefone, String email) {
        this.nome = nome;
        this.telefone = telefone;
        this.email = email;
    }

    public Aluno() {

    }

    public boolean temIdValido() {
        return id > 0;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getNome() {
        return nome;
    }

    public String getTelefone() {
        return telefone;
    }

    public String getEmail() {
        return email;
    }

    @Override
    public String toString() {
        return nome;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getId() {
        return id;
    }
}

poderiam me auxiliar?

2 respostas
solução!

Você criou um construtor para a classe FormularioAlunoActivity, a gente não faz isso, basta remover esse construtor que tudo deve dar certo

Nossa !!!!! nem tinha percebido!!! ...muito obrigada!!!! me ajudou muito!!!!