Error clicking save new process after assigning data in each field:
java.lang.NullPointerException: Attempt to invoke virtual method 'long com.example.alex.levprocess.processos.RepositorioProcesso.salvar(com.example.alex.levprocess.processos.Processo)' on a null object reference
at com.example.alex.levprocess.processos.NovoProcesso.salvarProcesso(NovoProcesso.java:76)
at com.example.alex.levprocess.processos.NovoProcesso.salvar(NovoProcesso.java:69)
at com.example.alex.levprocess.processos.NovoProcesso$2.onClick(NovoProcesso.java:45)
New Process Class
package com.example.alex.levprocess.processos;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import com.example.alex.levprocess.R;
import com.example.alex.levprocess.cliente.MenuCliente;
public class NovoProcesso extends Activity {
private EditText nome, responsavel, papel, objetivo, condicao, entradas, saidas, roteiro;
private Long id;
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.novo_processo);
nome = (EditText) findViewById(R.id.etNomeProcesso);
responsavel = (EditText) findViewById(R.id.etResponsavel);
papel = (EditText) findViewById(R.id.etPapel);
objetivo = (EditText) findViewById(R.id.etObjetivo);
condicao = (EditText) findViewById(R.id.etCondicao);
entradas = (EditText) findViewById(R.id.etEntradas);
saidas = (EditText) findViewById(R.id.etSaidas);
roteiro = (EditText) findViewById(R.id.etRoteiro);
id = null;
ImageButton btCancelar = (ImageButton) findViewById(R.id.btCancelar);
Button cdsRoteiro = (Button) findViewById(R.id.botaoRoteiro);
btCancelar.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
setResult(RESULT_CANCELED);
finish();// Fecha a tela
}
});
ImageButton btSalvar = (ImageButton) findViewById(R.id.btSalvar);
btSalvar.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
salvar();
}
});
}
protected void onPause() {
super.onPause();
// Cancela para nao ficar nada na tela pendente
setResult(RESULT_CANCELED);
// Fecha a tela
finish();
}
public void salvar() {
Processo processo = new Processo();
if (id != null) {
processo.id = id;// E uma atualizacao
}
processo.nome = nome.getText().toString();
processo.responsavel = responsavel.getText().toString();
processo.papel = papel.getText().toString();
processo.objetivo = objetivo.getText().toString();
processo.condicao = condicao.getText().toString();
processo.entradas = entradas.getText().toString();
processo.saidas = saidas.getText().toString();
processo.roteiro = roteiro.getText().toString();
salvarProcesso(processo);// Salvar
setResult(RESULT_OK, new Intent()); // OK
// Fecha a tela
finish();
}
protected void salvarProcesso(Processo processo) {
CadastroProcessos.repositorio.salvar(processo);
}
}
Class Data RepositoryProcess
public long salvar(Processo processo) {
long id = processo.id;
if (id != 0) {
atualizar(processo);
} else {
// Insere novo
id = inserir(processo);
}
return id;
}
// Insere um novo processo
public long inserir(Processo processo) {
ContentValues values = new ContentValues();
values.put(Processos.NOME, processo.nome);
values.put(Processos.RESPONSAVEL, processo.responsavel);
values.put(Processos.PAPEL, processo.papel);
values.put(Processos.OBJETIVO, processo.objetivo);
values.put(Processos.CONDICAO, processo.condicao);
values.put(Processos.ENTRADAS, processo.entradas);
values.put(Processos.SAIDAS, processo.saidas);
values.put(Processos.ROTEIRO, processo.roteiro);
long id = inserir(values);
return id;
}
// Insere um novo processo
public long inserir(ContentValues valores) {
long id = db.insert(NOME_TABELA, "", valores);
return id;
}
ProcessCode Class
import java.util.List;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ListView;
import com.example.alex.levprocess.R;
import com.example.alex.levprocess.processos.Processo.Processos;
public class CadastroProcessos extends ListActivity {
protected static final int INSERIR_EDITAR = 1;
protected static final int BUSCAR = 2;
public static RepositorioProcesso repositorio;
private List<Processo> processos;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
repositorio = new RepositorioProcesso(this);
atualizarLista();
}
protected void atualizarLista() {
// Pega a lista de processos e exibe na tela
processos = repositorio.listarProcessos();
// Adaptador de lista customizado para cada linha de um processo
setListAdapter(new ProcessoListAdapter(this, processos));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(0, INSERIR_EDITAR, 0, "Inserir Novo").setIcon(R.drawable.novo);
menu.add(0, BUSCAR, 0, "Buscar").setIcon(R.drawable.pesquisar);
return true;
}
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
// Clicou no menu
switch (item.getItemId()) {
case INSERIR_EDITAR:
// Abre a tela com o formulario para adicionar
startActivityForResult(new Intent(this, EditarProcesso.class), INSERIR_EDITAR);
break;
case BUSCAR:
// Abre a tela para buscar o processo pelo nome
startActivity(new Intent(this, BuscarProcesso.class));
break;
}
return true;
}
@Override
protected void onListItemClick(ListView l, View v, int posicao, long id) {
super.onListItemClick(l, v, posicao, id);
editarProcesso(posicao);
}
// Recupera o id do processo, e abre a tela de edicao
protected void editarProcesso(int posicao) {
// Usuario clicou em algum processo da lista e
// Recupera o processo selecionado
Processo processo = processos.get(posicao);
// Cria a intent para abrir a tela de editar
Intent it = new Intent(this, EditarProcesso.class);
// Passa o id do processo como parametro
it.putExtra(Processos._ID, processo.id);
// Abre a tela de edicao
startActivityForResult(it, INSERIR_EDITAR);
}
@Override
protected void onActivityResult(int codigo, int codigoRetorno, Intent it) {
super.onActivityResult(codigo, codigoRetorno, it);
// Quando a activity EditarCurriculo retornar, seja se foi para adicionar vamos atualizar a lista
if (codigoRetorno == RESULT_OK) {
// atualiza a lista na tela
atualizarLista();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
// Fecha o banco
repositorio.fechar();
}
}