1
resposta

Esse código da passagem de dados via activity não funciona

Alguém que tenha completado essa parte do curso de Android poderia me ajudar a indentificar qual poderia ser o problema desse código?

package com.alura.magnero2018.agendaalura;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;

import java.util.List;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicReference;

import alura.modelo.Aluno;
import br.com.alura.dao.AlunoDAO;

public class ListaAlunosActivity extends AppCompatActivity {

    private ListView listaAlunos;
    FormularioActivity activity;
    private FormularioHelper helper;
    Aluno aluno = new Aluno();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_lista_alunos);
        Button btnNovoAluno = findViewById(R.id.btnNovoAluno);
        listaAlunos = findViewById(R.id.lista_alunos);

        FormularioHelper helper = new FormularioHelper(Objects.requireNonNull(activity));
        Intent intent = getIntent();
        Aluno aluno = ((Aluno) intent.getSerializableExtra("aluno"));
        if (aluno.getNome() !=null) {
            helper.preencheFormulario(aluno);
        }

        @Override
        public void onItemCIick((AdapterView<> lista, View item, int position, long id) {
            Aluno aluno = (Aluno) listaAlunos.getItemAtPosition(position);
            Intent intentVaiProFormulario = new Intent(ListaAlunosActivity.this, FormularioActivity.class);
            intentVaiProFormulario.putExtra("aluno", aluno) startActivity(intentVaiProFormulario);
        });
        carregaLista();

        registerForContextMenu(listaAlunos);
        btnNovoAluno.setOnClickListener((v) -> {
            Intent abrirFormulario = new Intent(ListaAlunosActivity.this, FormularioActivity.class);
            startActivity(abrirFormulario);
        });
    }

    private void carregaLista() {
        AlunoDAO dao = new AlunoDAO(this);
        //cria uma lista com os dados buscados do banco
        List<Aluno> alunos = dao.buscaAlunos();
        dao.close();

        ListView listaAlunos = findViewById(R.id.lista_alunos);

        ArrayAdapter<Aluno> adapter = new ArrayAdapter<Aluno>(this, android.R.layout.simple_list_item_1, alunos);
        listaAlunos.setAdapter(adapter);
    }

    protected void onResume()
    {
        super.onResume();
    }


    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)
    {
        MenuItem deletar = menu.add("Deletar");
        deletar.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
           @Override
           public boolean onMenuItemClick(MenuItem item) {
               AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
               Aluno aluno = (Aluno) listaAlunos.getItemAtPosition(info.position);

               AlunoDAO dao = new AlunoDAO(ListaAlunosActivity.this);
               dao.deleta(aluno);
               dao.close();
               Toast.makeText(ListaAlunosActivity.this, "Aluno " + aluno.getNome() + " deletado com sucesso!", Toast.LENGTH_SHORT).show();
               carregaLista();
               return false;
           }
       });
    }
}


1 resposta

Nesse trecho de código...

intentVaiProFormulario.putExtra("aluno", aluno) startActivity(intentVaiProFormulario);

... tá faltando um ponto-e-vírgula para separar duas instruções.

Faça assim:

intentVaiProFormulario.putExtra("aluno", aluno);
startActivity(intentVaiProFormulario);