gpt4 book ai didi

java - SQLITE Android NullPointerException 更新数据时

转载 作者:行者123 更新时间:2023-12-01 22:29:26 24 4
gpt4 key购买 nike

我遇到了 SQLITE Android 问题。

我使用相同的 Activity [CadastroCliente] 来注册和更新客户信息;为了定义我是要更新还是注册,我在主菜单 [ListarClientes] 中有一个名为 UPDATE 的公共(public)静态整数变量,其中 0 = 注册,1 = 更新。

事情是这样的:

  1. 用户点击“编辑信息”
  2. 我告诉注册/更新 Activity UPDATE 变量值为 1,因此它知道它处于编辑模式。
  3. 用户输入他想要更新的内容。
  4. 当他单击“保存”按钮时,这是我调用的方法:

            if (listarCliente.UPDATE == 0)
    this.cadastrar();
    if (listarCliente.UPDATE == 1)
    this.clienteDAO.updateData(listarCliente.ID_CLIENTE, nome, email);

这是我得到的错误:

java.lang.NullPointerException: Attempt to invoke virtual method 'int android.database.sqlite.SQLiteDatabase.update(java.lang.String, android.content.ContentValues, java.lang.String, java.lang.String[])' on a null object reference 
at dao.ClienteDAO.updateData(ClienteDAO.java:104)
at com.financeiro.coolkey.financeiro_2.CadastroCliente.onOptionsItemSelected(CadastroCliente.java:138)

我很困惑,因为当我从 ListarCliente Activity 中调用“clienteDAO.updateData”时,它就像一个魅力。但是当我将其发送到 CadastroCliente 时,它​​返回此错误。有小费吗?

如果缺少任何信息请告诉我,我一定会更新! :)

提前致谢!!!

-

-额外信息:

dao.ClienteDAO.updateData(ClienteDAO.java:104)

public boolean updateData(long updateId, String nome, String email)
{
ContentValues contentValues = new ContentValues();
contentValues.put(DatabaseHelper.Clientes.NOME, nome);
contentValues.put(DatabaseHelper.Clientes.EMAIL, email);

return database.update(DatabaseHelper.Clientes.TABELA, contentValues, DatabaseHelper.Clientes._ID + "=" + updateId, null) > 0;
}

com.financeiro.coolkey.financeiro_2.CadastroCliente.onOptionsItemSelected(CadastroCliente.java:138)

this.clienteDAO.updateData(listarCliente.ID_CLIENTE, nome, email);

如何从 ListarClientes [主菜单]启动 Activity :

        UPDATE = 1;
startActivity(new Intent(ListarCliente.this, CadastroCliente.class));

调用 updateData 的完整 onClick 方法:

@Override
public boolean onOptionsItemSelected(MenuItem item)
{
int id = (int) item.getItemId();

AdapterView.AdapterContextMenuInfo menuInfo = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();

String nome = edtNome.getText().toString();
String email = edtEmail.getText().toString();

if (id == R.id.action_menu_salvar)
{
validacao = true;

if (nome == null || nome.equals(""))
{
validacao = false;
edtNome.setError(getString(R.string.mensagem_cadastro_erro));
}

if(email == null || email.equals(""))
{
validacao = false;
edtEmail.setError(getString(R.string.mensagem_cadastro_erro));
}

if(validacao)
{
if (listarCliente.UPDATE == 0)
this.cadastrar();
if (listarCliente.UPDATE == 1)
this.clienteDAO.updateData(listarCliente.ID_CLIENTE, nome, email);


finish();
startActivity(new Intent(this, ListarCliente.class));
}
}

if (id == R.id.action_menu_sair)
{
finish();
startActivity(new Intent(this, ListarCliente.class));
}

return super.onOptionsItemSelected(item);
}

clienteDAO 初始化位置:

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

if (listarCliente.UPDATE == 0)
setTitle("Cadastro de Clientes");
else if (listarCliente.UPDATE == 1)
setTitle("Editar Dados do cliente");


clienteDAO = new ClienteDAO(this);


edtNome = (EditText) findViewById(R.id.cadastro_edtNome);
edtEmail = (EditText) findViewById(R.id.cadastro_edtEmail);
}

最佳答案

NullPointerException: Attempt to invoke virtual method

表示使用未初始化的对象调用update方法。因此,在调用update方法之前,请确保database不为null

关于java - SQLITE Android NullPointerException 更新数据时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28116629/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com