Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Android Studio 4

A minha agenda fecha após clicar em salvar. Sem mensagem de erro.

Código:

Aluno.java package br.com.codex.agenda.model;

import androidx.annotation.NonNull;

public class Aluno { private final String nome; private final String telefone; private final String email;

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

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

}

AlunoDAO.java

package br.com.codex.agenda.DAO;

import java.util.ArrayList; import java.util.List;

import br.com.codex.agenda.model.Aluno;

public class AlunoDAO {

private final static List<Aluno> alunos = new ArrayList<>();

public void salva(Aluno aluno) {
    alunos.add(aluno);

}


public List<Aluno> todos() {
    return new ArrayList<>(alunos);
}

}

FormularioAlunoActivity.java package br.com.codex.agenda.ui.activity;

import androidx.appcompat.app.AppCompatActivity;

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 br.com.codex.agenda.DAO.AlunoDAO; import br.com.codex.agenda.R; import br.com.codex.agenda.model.Aluno;

public class FormularioAlunoActivity extends AppCompatActivity {

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

    final AlunoDAO dao = new AlunoDAO();

    final EditText campoNome = findViewById(R.id.activity_formulario_aluno_nome);
    final EditText campoTelefone = findViewById(R.id.activity_formulario_aluno_telefone);
    final EditText campoEmail = findViewById(R.id.activity_formulario_aluno_Email);

    Button botaoSalvar = findViewById(R.id.activity_formulario_aluno_botao_salvar);
    botaoSalvar.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String nome = campoNome.getText().toString();
            String telefone = campoTelefone.getText().toString();
            String email = campoEmail.getText().toString();

            Aluno alunoCriado = new Aluno(nome, telefone, email);
            dao.salva(alunoCriado);

            startActivity(new Intent(FormularioAlunoActivity.this, ListaAlunosActivity.class));

        }

    });
}

}

ListaAlunosActivity.java

package br.com.codex.agenda.ui.activity;

import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.ListView;

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

import java.util.ArrayList; import java.util.Arrays; import java.util.List;

import br.com.codex.agenda.DAO.AlunoDAO; import br.com.codex.agenda.R;

public class ListaAlunosActivity extends AppCompatActivity {

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

            AlunoDAO dao = new AlunoDAO();

            setTitle("Lista de Alunos");

            ListView listaDeAlunos = findViewById(R.id.activity_lista_de_alunos_listview);
            listaDeAlunos.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, dao.todos()));


}

}

1 resposta
solução!

Recebi essa msg no Console: android.content.ActivityNotFoundException: Unable to find explicit activity class {br.com.codex.agenda/br.com.codex.agenda.ui.activity.ListaAlunosActivity}; have you declared this activity in your AndroidManifest.xml?

A ListaAlunosActivity estava comentada no manifest. Habilitei no manifest e apenas comentei a linha do launcher para trabalhar no formulário.

category android:name="android.intent.category.LAUNCHER" />