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

ListaAlunosActivity onCreate sempre executa

Pessoal, sempre que crio ou edito um aluno, o onCreate da ListaAlunosActivity é chamado, com isto ele sempre cria aqueles novos alunos de teste. O onCreate é executado até mesmo quando a tela é rotacionada. O que pode estar ocasionando isto?

ListaAlunosActivity

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

import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import java.util.List;

import br.com.cavz.agenda.R;
import br.com.cavz.agenda.dao.AlunoDAO;
import br.com.cavz.agenda.model.Aluno;

public class ListaAlunosActivity extends AppCompatActivity {

    public static final String TITULO_APPBAR = "Lista de Alunos";
    AlunoDAO dao = new AlunoDAO();

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

        dao.salva(new Aluno("Fulano", "987654321", "f@gmail.com"));
        dao.salva(new Aluno("Sicrano", "123456789", "s@gmail.com"));
    }

    private void configuraFabNovoAluno() {
        FloatingActionButton botaoNovoAluno = findViewById(R.id.activity_lista_alunos_fab_novo_aluno);
        botaoNovoAluno.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                abreFormularioAlunoActivity();
            }
        });
    }

    private void abreFormularioAlunoActivity() {
        startActivity(new Intent(this, FormularioAlunoActivity.class));
    }

    @Override
    protected void onResume() {
        super.onResume();
        configuraLista();
    }

    private void configuraLista() {
        ListView listaDeAlunos = findViewById(R.id.activity_lista_alunos_listview);
        final List<Aluno> alunos = dao.todos();
        listaDeAlunos.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, alunos));

        listaDeAlunos.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Intent vaiParaFormularioActivity = new Intent(ListaAlunosActivity.this, FormularioAlunoActivity.class);
                Aluno alunoEscolhido = alunos.get(position);
                vaiParaFormularioActivity.putExtra("aluno", alunoEscolhido);
                startActivity(vaiParaFormularioActivity);
            }
        });
    }
}
2 respostas
solução!

Oi Cézar, tudo bem?

O onCreate() é chamado apenas quando a Activity é destruída, podemos ver o fluxo do ciclo de vida conforme imagem apresentada na documentação:

Ao rotacionar a tela a Activity é destruída também! Esse detalhe que mencionou é resolvido mais pra frente conforme a sequência dos 3 cursos de fundamentos de Android.

[]s

Ok, Alex! Muito obrigado pela resposta. Irei acompanhar o próximo módulo para verificar a questão!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software