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

dúvida ao registrar menu de contexto.

Se eu coloco o método

registerForContextMenu(listaAlunos);

dentro de onCreate() como é pedido no exercício, não funciona. Quando rodo o emulador aparece "Unfortunately, Agenda has stopped". Mas se coloco no método

onResume()

funciona perfeitamente.

Normal que aconteça isso?

3 respostas

o código está assim:

public class ListaAlunosActivity extends AppCompatActivity {

    private ListView listaAlunos;

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

        Button novoAluno = findViewById(R.id.novo_aluno);
        novoAluno.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(ListaAlunosActivity.this,
                        FormularioActivity.class );
                startActivity(intent);
            }
        });


    }

    private void carregaLista() {
        AlunoDAO dao = new AlunoDAO(this);
        List<Aluno> alunos = dao.buscaAlunos();
        dao.close();

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

    @Override
    protected void onResume() {
        super.onResume();
        carregaLista();
        registerForContextMenu(listaAlunos);
    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo) {
        MenuItem deletar = menu.add("Deletar");
        deletar.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                Toast.makeText(ListaAlunosActivity.this, "Clicou em deletar!", Toast.LENGTH_SHORT).show();
                return false;
            }
        });
    }
}
solução!

Livia, tudo bem ?

O problema é que da forma que está fazendo, quando chama no oncreate, sua listview está nula, fazendo com que gera a exception.

Quando voce executa no oncreate ele já tem referencia e ai funciona.

Ah sim entendi agora. Também comparei com o código disponibilizado.

Muito Obrigada!