I'm trying to insert some values in the database, but it's always giving an exception.
My class that enters the bank:
private String email;
private int codigo;
private Button btnOkay;
private Button btnCancelar;
private EditText codigoConfirmaCadastro;
private TextView reenviarEmail;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_confirma_cadastro);
try {
Intent intent = getIntent();
if (intent != null) {
email = intent.getStringExtra(Intent.EXTRA_EMAIL);
}
Bundle extras = getIntent().getExtras();
final String nome = extras.getString("nome");
final String cpf = extras.getString("cpf");
final String data = extras.getString("data");
final String senha = extras.getString("senha");
enviaEmailConfirmacao();
btnOkay = (Button)findViewById(R.id.btn_okayConfirmaCadastro);
btnCancelar = (Button)findViewById(R.id.btn_cancelarConfirmaCadastro);
codigoConfirmaCadastro = (EditText)findViewById(R.id.codigo_confirmaCadastro);
reenviarEmail = (TextView)findViewById(R.id.reenviar_email);
btnOkay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
String text = codigoConfirmaCadastro.getText().toString();
text.trim();
boolean isInserted;
if(text.isEmpty()) {
throw new Exception("Informe o código.");
}
int cod = Integer.parseInt(text);
if (cod != codigo) {
throw new Exception("Informe o código correto");
} else {
isInserted = PrincipalActivity.myDb.cadastrarUsuario(nome, email, senha, cpf, data);
if (isInserted == true) {
Intent intent = new Intent(ConfirmaCadastroActivity.this, LoginActivity.class);
startActivity(intent);
} else {
throw new Exception("Houve algúm erro ao cadastrar o usuário");
}
}
} catch (Exception ex) {
Toast.makeText(ConfirmaCadastroActivity.this, ex.getMessage(), Toast.LENGTH_LONG).show();
}
}
});
btnCancelar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
reenviarEmail.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
enviaEmailConfirmacao();
Toast.makeText(ConfirmaCadastroActivity.this, "E-mail enviado, se o problema persistir, verifique o e-mail informado",
Toast.LENGTH_LONG).show();
}
});
} catch (Exception ex) {
Toast.makeText(this, ex.getMessage(), Toast.LENGTH_LONG).show();
}
}
Bank Class:
public static final String NOME_BANCO = "banco.db";
public static final int VERSION = 5;
public static final String tabela_produto = "produto", nome_produto = "nome_produto", cod_produto = "cod_produto",
categoria = "categoria", peso = "peso", preco = "preco";
public static final String tabela_usuario = "usuario", nome_usu = "nome_usu", email = "email", senha = "senha",
cpf = "cpf", dt_nasc = "dt_nasc";
public static final String tabela_carrinho = "carrinho", nome_produto_carrinho = "nome_produto_carrinho",
cod_produto_carrinho = "cod_produto_carrinho", categoria_carrinho = "categoria_carrinho", peso_carrinho = "peso_carrinho",
preco_carrinho = "preco_carrinho", qtd_carrinho = "qtd_carrinho";
public static final String tabela_lista = "lista", nome_produto_lista = "nome_produto_lista";
public DatabaseHelper(Context context) {
super(context, NOME_BANCO, null, VERSION);
SQLiteDatabase db = this.getWritableDatabase();
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + tabela_produto + " (" +
nome_produto + " text, " +
cod_produto + " text primary key, " +
categoria + " text, " +
peso + " text, " +
preco + " integer)");
db.execSQL("CREATE TABLE " + tabela_usuario + " (" +
nome_usu + " text, " +
email + " text, " +
senha + " text, " +
cpf + " text primary key, " +
dt_nasc + " date)");
db.execSQL("CREATE TABLE " + tabela_carrinho + " (" +
nome_produto_carrinho + " text, " +
cod_produto_carrinho + " text primary key, " +
categoria_carrinho + " text, " +
peso_carrinho + " text, " +
preco_carrinho + " integer)");
db.execSQL("CREATE TABLE " + tabela_lista + " (" +
nome_produto_lista + " text)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE " + tabela_produto);
db.execSQL("DROP TABLE " + tabela_usuario);
db.execSQL("DROP TABLE " + tabela_carrinho);
db.execSQL("DROP TABLE " + tabela_lista);
onCreate(db);
db.execSQL("ALTER TABLE " + tabela_carrinho + " ADD COLUMN " + qtd_carrinho + " integer");
}
public boolean inserirProduto(String nome_produto1, String cod_produto1, String categoria1, String peso1, int preco1) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(nome_produto, nome_produto1);
contentValues.put(cod_produto, cod_produto1);
contentValues.put(categoria, categoria1);
contentValues.put(peso, peso1);
contentValues.put(preco, preco1);
long result = db.insert(tabela_produto, null, contentValues);
if (result == -1)
return false;
else
return true;
}
public Cursor carregaDados() {
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery("SELECT * FROM " + tabela_produto, null);
return res;
}
public Cursor carregaDadoPorCodigo(String scanCodigo) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor res;
String[] campos = {nome_produto, cod_produto, categoria, peso, preco};
String where = cod_produto + " = " + scanCodigo;
res = db.query(tabela_produto, campos, where, null, null, null, null, null);
if (res != null) {
res.moveToFirst();
}
db.close();
return res;
}
public Cursor carregaDadosCarrinho() {
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery("SELECT * FROM " + tabela_carrinho, null);
return res;
}
public Integer deletaTudo() {
SQLiteDatabase db = this.getWritableDatabase();
return db.delete(tabela_produto, null, null) + db.delete(tabela_carrinho, null, null);
}
public boolean inserirProdutoCarrinho(String nome_produto1, String cod_produto1, String categoria1, String peso1,
int preco1, int qtd) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(nome_produto_carrinho, nome_produto1);
contentValues.put(cod_produto_carrinho, cod_produto1);
contentValues.put(categoria_carrinho, categoria1);
contentValues.put(peso_carrinho, peso1);
contentValues.put(preco_carrinho, preco1);
contentValues.put(qtd_carrinho, qtd);
long result = db.insert(tabela_carrinho, null, contentValues);
if (result == -1)
return false;
else
return true;
}
public boolean alteraQTD(String codigo, int quantidade) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues valores;
valores = new ContentValues();
valores.put(qtd_carrinho, quantidade);
db.update(tabela_carrinho, valores, cod_produto_carrinho + " = ?", new String[] {codigo});
db.close();
return true;
}
public boolean cadastrarUsuario(String nome_usu1, String email1, String senha1, String cpf1, String dt_nasc1) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues valores = new ContentValues();
valores.put(nome_usu, nome_usu1);
valores.put(email, email1);
valores.put(senha, senha1);
valores.put(cpf, cpf1);
valores.put(dt_nasc, dt_nasc1);
long resultado = db.insert(tabela_usuario, null, valores);
if(resultado == -1) {
return false;
} else {
return true;
}
}
public Cursor carregaUsuario(String email1, String senha1) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor res;
String[] campos = {email, senha};
String where = email + " = " + email1 + " AND " + senha + " = " + senha1;
res = db.query(tabela_usuario, campos, where, null, null, null, null, null);
if (res != null) {
res.moveToFirst();
}
db.close();
return res;
}
public Cursor carregaUsuarioEmail(String email1) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor res;
String[] campos = {nome_usu, email, senha, cpf};
String where = email + " = " + email1;
res = db.query(tabela_usuario, campos, where, null, null, null, null, null);
if (res != null) {
res.moveToFirst();
}
db.close();
return res;
}
Please help me please This is the error:
06-03 01: 56: 20.536 31451-31451 / com.example.myapplicationbank E / AndroidRuntime: FATAL EXCEPTION: main Process: com.example.myapplicationbank, PID: 31451 java.lang.NullPointerException: Attempt to invoke virtual method boolean com.example.myapplicationbanco.DatabaseHelper.addressUser (java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String) 'on a null object reference at com.example.myapplicationbank.ConfirmCadastroActivity $ 1.onClick (ConfirmCadastroActivity.java:69) at android.view.View.performClick (View.java:5201) at android.view.View $ PerformClick.run (View.java:21163) at android.os.Handler.handleCallback (Handler.java:746) at android.os.Handler.dispatchMessage (Handler.java:95) at android.os.Looper.loop (Looper.java:148) at android.app.ActivityThread.main (ActivityThread.java:5443) at java.lang.reflect.Method.invoke (Native Method) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:728) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:618)
The mainActivity:
public class PrincipalActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
public static DatabaseHelper myDb;
private ListView catalogoCategoriaList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_principal);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
myDb = new DatabaseHelper(this);
myDb.inserirProduto("Feijão", "48579", "Alimentos", "1", 3);
myDb.inserirProduto("Arroz", "666777", "Alimentos", "1", 2);
myDb.inserirProduto("Macarrão", "4823421", "Alimentos", "0.5", 2);
myDb.inserirProduto("Vodka", "216584", "Bebidas", "1", 8);
myDb.inserirProduto("Coca-cola", "498437", "Bebidas", "2,5", 7);
myDb.inserirProduto("Fraldas", "798458", "Bebes", "2", 30);
myDb.inserirProduto("Molho-Shoyo", "242526", "Temperos", "0.25", 2);
myDb.inserirProduto("Banana", "161719", "Frutas", "1", 4);
catalogoCategoriaList = (ListView)findViewById(R.id.listView_categoria);
ArrayAdapter<String> adpDados;
final ArrayList<String> categorias = new ArrayList<>();
Cursor cursor = myDb.carregaDados();
while(cursor.moveToNext()) {
if (!categorias.contains(cursor.getString(cursor.getColumnIndexOrThrow(DatabaseHelper.categoria)))) {
categorias.add(cursor.getString(cursor.getColumnIndexOrThrow(DatabaseHelper.categoria)));
}
}
adpDados = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, categorias);
catalogoCategoriaList.setAdapter(adpDados);
catalogoCategoriaList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(getApplicationContext(), ProdutosCatalogoActivity.class);
String categoria1 = categorias.get(position);
intent.putExtra("categoria1", categoria1);
startActivity(intent);
}
});
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
}
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.principal, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
if (id == R.id.nav_scan) {
IntentIntegrator scan = new IntentIntegrator(this);
scan.initiateScan();
} else if (id == R.id.nav_carrinho) {
Intent it = new Intent(this, CarrinhoActivity.class);
startActivity(it);
} else if (id == R.id.nav_slideshow) {
} else if (id == R.id.nav_manage) {
} else if (id == R.id.nav_terminar) {
myDb.deletaTudo();
finish();
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
IntentResult resultado = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
if(resultado != null) {
final String scanCodigo = resultado.getContents();
final Cursor res = myDb.carregaDadoPorCodigo(scanCodigo);
AlertDialog ad = new AlertDialog.Builder(this).create();
ad.setTitle("Deseja adicionar ao carrinho?");
ad.setMessage("Nome: " + res.getString(res.getColumnIndexOrThrow(DatabaseHelper.nome_produto)) + "\n"
+"Código: " + res.getString(res.getColumnIndexOrThrow(DatabaseHelper.cod_produto)) + "\n"
+"Categoria: " + res.getString(res.getColumnIndexOrThrow(DatabaseHelper.categoria)) + "\n"
+"Peso: " + res.getString(res.getColumnIndexOrThrow(DatabaseHelper.peso)) + "\n"
+ "Preço: " + res.getString(res.getColumnIndexOrThrow(DatabaseHelper.preco)));
ad.setButton(DialogInterface.BUTTON_POSITIVE, "Sim", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
int qtd = 1;
boolean isInserted = myDb.inserirProdutoCarrinho(res.getString(res.getColumnIndexOrThrow(DatabaseHelper.nome_produto)),
res.getString(res.getColumnIndexOrThrow(DatabaseHelper.cod_produto)),
res.getString(res.getColumnIndexOrThrow(DatabaseHelper.categoria)),
res.getString(res.getColumnIndexOrThrow(DatabaseHelper.peso)),
Integer.parseInt(res.getString(res.getColumnIndexOrThrow(DatabaseHelper.preco))), qtd);
if (isInserted == true) {
Toast.makeText(PrincipalActivity.this, "Produto adicionado ao carrinho.", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(PrincipalActivity.this, "Este Produto já existe no seu carrinho", Toast.LENGTH_SHORT).show();
}
}
});
ad.setButton(DialogInterface.BUTTON_NEGATIVE, "Nâo", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(PrincipalActivity.this, "Produto não adicionado ao carrinho.", Toast.LENGTH_SHORT).show();
}
});
ad.show();
} if(resultado == null) {
Toast.makeText(PrincipalActivity.this, "Desculpe, nenhum código de barras encontrado.", Toast.LENGTH_SHORT).show();
}
}
}