Galera, estou tentando adicionar a função "Editar" ao ContextMenu, ao invés de abrir o FormularioActivity ao clicar. Porém, não estou conseguindo...Tentei utilizar a mesma sequência que foi utilizado no OnItemClickListener, mas sempre recebo um NullPointerException toda vez que testo.
Alguém pode me ajudar por favor?
O código está assim:
ListaProjetosActivity.java
A View abre o Menu de Contexto. Se eu clico em "Remover", ele funciona perfeitamente, está excluindo. Agora se eu clico em "Editar" o código quebra.
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
getMenuInflater().
inflate(R.menu.activity_listaprojetos_menu, menu);
}
@Override
public boolean onContextItemSelected(@NonNull MenuItem item) {
int itemId = item.getItemId();
if (itemId == R.id.activity_listaprojetos_menu_remover) {
listaProjetosView.confirmaRemocao(item);
}
if (itemId == R.id.activity_listaprojetos_menu_editar) {
listaProjetosView.carrega(item);
}
return super.onContextItemSelected(item);
}
ListaProjetosView.java
Aqui, a função "carrega()" deveria buscar a posição do item clicado, e jogar pra new Intent e colocar a chave "projeto", projeto.
public void carrega(MenuItem item) {
AdapterView.AdapterContextMenuInfo menuInfo =
(AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
Projeto projetoEscolhido = adapter.getItem(menuInfo.position);
abreFormularioEditaProjeto(projetoEscolhido);
}
private void abreFormularioEditaProjeto(Projeto projeto) {
Intent vaiParaFormularioActivity = new Intent(this, FormularioProjetoActivity.class);
vaiParaFormularioActivity.putExtra(KEY_PROJETO, projeto);
startActivity(vaiParaFormularioActivity);
}
FormularioProjetoActivity.java
Aqui no formulário, ele devera analisar se a intent tem a chave "projeto" e carregar os dados já preenchidos...mas isto não está ocorrendo.
private void carregaProjeto() {
Intent dados = getIntent();
if (dados.hasExtra(KEY_PROJETO)) {
setTitle(TITLE_APPBAR_EDITAPROJETO);
projeto = (Projeto) dados.getSerializableExtra(KEY_PROJETO);
preencheCampos();
} else {
setTitle(TITLE_APPBAR_NOVOPROJETO);
projeto = new Projeto();
}
}