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

Uso do método onActivityResult para adicionar aluno com AsyncTask

Foi dito na aula para que no momento da inserção do aluno no banco de dados, fosse utilizado do AsyncTask, e que dentro dela uma Interface que indicaria o seu momento quando finalizada, utilizando o 'finish()'.

Porém, venho utilizando onActivityResult ao qual recebe as informações da minha classe FormulárioActivity, e que para completar essa ação utilizo do finish() mesmo antes de adicionar em meu banco de dados.

Fazendo também desta forma poderiam ocasionar em possíveis problemas, pois estou fazendo aquele processo de 'Primeiro Finaliza e Depois Adiciona' e não o 'Primeiro Adiciona e depois Finaliza'.

FormularioActivity

Aluno aluno = criaNovoAluno();

Intent intent = new Intent();
intent.putExtra(ALUNO, aluno);
setResult(ALUNO_RESULT, intent);

finish();

ListaAlunoActivity

 @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == ALUNO_REQUEST && resultCode == ALUNO_RESULT && data.hasExtra(ALUNO)) {
            Aluno aluno = (Aluno) data.getSerializableExtra(ALUNO);

            //adiciona ao banco de dados.
            new AdicionaAlunoTask(database, alunoDao, aluno).execute();

        }
    }
1 resposta
solução!

Oi Victor, tudo bem?

Ambas as abordagens são válidas, mas como falou cada abordagem vai ter vantagem e desvantagem, no caso dessa que você cria e delega para Activity que chamou, se tiver algum problema durante a criação ou inserção no banco, o usuário vai ter que entrar novamente na tela de formulário e preencher o conteúdo.

Da mesma maneira a Activity de formulário fica com menos responsabilidade, apenas cria o aluno e delega para quem pediu. Em outras palavras, é importante identificar os pontos falhos para saber onde implementar o código que vai lidar com os casos excepcionais, seja validação ou tratamento de erros inesperados.

[]s