Olá.
Na hora de execução do OnMenuItenClick para Deletar apresenta o erro java.lang.NullPointerException no ClienteDAO Já pesquisei que não pode voltar um valor NULL, mas não sei aonde esta puxando esse valor NULL e como corrigir. Podem me ajudar por favor?
CLASSE LISTA DE CLIENTE ACTIVITY
public class ListaClientesActivity extends Activity{
private ListView lista;
private Cliente cliente;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listagem_clientes);
lista = (ListView) findViewById(R.id.lista);
registerForContextMenu(lista);
//Clique normal
lista.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapter, View view,
int posicao, long id) {
Intent irParaFormulario = new Intent(ListaClientesActivity.this, FormularioActivity.class);
startActivity(irParaFormulario);
Toast.makeText(ListaClientesActivity.this, "A posição é: " + posicao, Toast.LENGTH_SHORT).show();
}
});
}
@Override
protected void onResume() {
//carregaLista();
super.onResume();
ClienteDAO dao = new ClienteDAO(this);
List<Cliente> clientes = dao.getLista();
ArrayAdapter<Cliente> adapter =
new ArrayAdapter<Cliente>(this, android.R.layout.simple_list_item_1, clientes);
lista.setAdapter(adapter);
}
private void carregaLista() {
ClienteDAO dao = new ClienteDAO(this);
List<Cliente> clientes = dao.getLista();
ArrayAdapter<Cliente> adapter =
new ArrayAdapter<Cliente>(this, android.R.layout.simple_list_item_1, clientes);
lista.setAdapter(adapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_listaclientes, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.novo:
Intent irParaFormulario = new Intent(ListaClientesActivity.this, FormularioActivity.class);
startActivity(irParaFormulario);
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
menu.add("Ligar");
menu.add("Enviar SMS");
menu.add("Achar no Mapa");
menu.add("Navegar no site");
MenuItem deletar = menu.add("Deletar");
deletar.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
ClienteDAO dao = new ClienteDAO(ListaClientesActivity.this);
dao.deletar(cliente);
Toast.makeText(ListaClientesActivity.this,
"Clicou no Botão", Toast.LENGTH_LONG).show();
dao.close();
carregaLista();
return false;
}
});
menu.add("Enviar E-Mail");
super.onCreateContextMenu(menu, v, menuInfo);
}
}
CLASSE DAO
public class ClienteDAO extends SQLiteOpenHelper{
private static final String DATABASE = "db_CadClie";
private static final int VERSAO = 2;
private static final String TABELA = "Cliente";
public ClienteDAO(Context ctx) {
super(ctx, DATABASE, null, VERSAO);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "CREATE TABLE " + TABELA + " ( "
+ "id INTEGER PRIMARY KEY, "
+ "nome TEXT UNIQUE NOT NULL, "
+ "telefone TEXT, "
+ "endereco TEXT, "
+ "email TEXT, "
+ "nota REAL, "
+ "caminhoFoto TEXT"
+ ");";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String sql = "DROP TABLE IF EXISTS " + TABELA;
db.execSQL(sql);
onCreate(db);
}
public void insere(Cliente cliente) {
ContentValues cv = new ContentValues();
cv.put("nome", cliente.getNome());
cv.put("telefone", cliente.getTelefone());
cv.put("endereco", cliente.getEndereco());
cv.put("email", cliente.getEmail());
cv.put("nota", cliente.getNota());
cv.put("caminhoFoto", cliente.getCaminhoFoto());
getWritableDatabase().insert(TABELA, null, cv);
}
public List<Cliente> getLista() {
List<Cliente> clientes = new ArrayList<Cliente>();
String sql = "SELECT * FROM " + TABELA + ";";
Cursor c = getReadableDatabase().rawQuery(sql, null);
while (c.moveToNext()){
Cliente cliente = new Cliente();
cliente.setId(c.getLong(c.getColumnIndex("id")));
cliente.setNome(c.getString(c.getColumnIndex("nome")));
cliente.setTelefone(c.getString(c.getColumnIndex("telefone")));
cliente.setEndereco(c.getString(c.getColumnIndex("endereco")));
cliente.setEmail(c.getString(c.getColumnIndex("email")));
cliente.setNota(c.getDouble(c.getColumnIndex("nota")));
cliente.setCaminhoFoto(c.getString(c.getColumnIndex("caminhoFoto")));
clientes.add(cliente);
}
return clientes;
}
public void deletar(Cliente cliente) {
String[] args = {cliente.getId().toString()};
getWritableDatabase().delete("Cliente", "id=?", args);
}
}