我正在尝试将值插入名为“id_usuario”的列中,因此在我的登录页面中,我得到了一个在我的按钮中作为onclick事件调用的方法,这里是代码:
public void logar(View view) {
String login = edtlogin.getText().toString();
String senha = edtlogin.getText().toString();
LoginDTO loginDTO = new LoginDTO();
loginDTO.setUsuario(login);
loginDTO.setSenha(senha);
new LoadingAsync().execute();
}
这是LoginDTO的代码,我有“usuario”和“senha”的getter和setter:
public class LoginDTO implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1111108194849414002L;
private String usuario;
private String senha;
public String getUsuario() {
return usuario;
}
public void setUsuario(String usuario) {
this.usuario = usuario;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
}
要将数据插入表格“transacoes”,我得到了这个:
public void cadastrarTransacao(View view) {
TransacaoDTO transacaoDTO = new TransacaoDTO();
LoginDTO loginDTO = new LoginDTO();
//int idUsuario = Integer.parseInt(activity.getIDUsuario(loginOpenHelper));
transacaoDTO.setDesc(edtDescricao.getText().toString());
transacaoDTO.setData(edtData.getText().toString());
transacaoDTO.setValor(Long.parseLong(edtValor.getText().toString()));
transacaoDTO.setIdUsuario(Integer.parseInt(loginOpenHelper.getIDUsuario(loginDTO.getUsuario(), loginDTO.getSenha())));
ValidacaoMock resultado = mockBO.cadastrarOperacao(transacaoDTO);
MensagemUtil.addMsg(this, resultado.getMensagem());
Intent i = new Intent(this, MockListActivity.class);
startActivity(i);
finish();
}
对于“getIDUsuario”方法:
public String getIDUsuario(String usuario, String senha){
SQLiteDatabase db = this.getWritableDatabase();
String id = "id_usuario";
String[] columns = {id};
String[] selectionArgs ={usuario, senha};
Cursor cursor = db.query("usuarios", columns, "nome_usuario=? AND senha=?", selectionArgs, null, null, null);
StringBuffer buffer = new StringBuffer();
while(cursor.moveToNext()){
int index0 = cursor.getColumnIndex(id);
int idUsuario = cursor.getInt(index0);
buffer.append(idUsuario);
}
return buffer.toString();
}
这是错误:
11-16 14:40:25.624: E/AndroidRuntime(10623): Caused by: java.lang.NullPointerException
11-16 14:40:25.624: E/AndroidRuntime(10623): at com.br.texapp.MockTransacaoActivity.cadastrarTransacao(MockTransacaoActivity.java:51)
包含错误的行是:
transacaoDTO.setIdUsuario(Integer.parseInt(loginOpenHelper.getIDUsuario(loginDTO.getUsuario(), loginDTO.getSenha())));
有人可以帮帮我吗?
答案 0 :(得分:1)
我猜你还没有创建对象loginOpenHelper
。我敢打赌这是投掷NPE。
像
这样的东西loginOpenHelper = new LoginOpenHelper();