从EditTexts检索值时出现NullPointerException

时间:2014-11-16 16:46:57

标签: java android sqlite nullpointerexception logcat

我正在尝试将值插入名为“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())));

有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:1)

我猜你还没有创建对象loginOpenHelper。我敢打赌这是投掷NPE。

这样的东西
loginOpenHelper = new LoginOpenHelper();