昨天在敲代码的时候遇到这个问题搞了半天,今天下午又看看,终于解决了。完整的错误是这样的:
281 12851-12851/chapter05.qst.com.mobileguard E/InputEventReceiver: Exception dispatching input event.
281 12851-12851/chapter05.qst.com.mobileguard E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
281 12851-12851/chapter05.qst.com.mobileguard E/MessageQueue-JNI: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
主要问题是:
本来准备在主界面点击按钮时弹出一个对话框,用来输入和确认密码,在弹出框下面点击取消或确认,最后关闭对话框。但是一般的对话框只是设置取消和确认按钮,不能进行输入密码,所以对主页面上的按钮(使用了Listview)设置监听器,之前能弹出对话框,但是设置完监听器后只有一点击就会闪退。
主要原因:
在主页面弹出的对话框看作是一个布局,然后用到了
View view = View.inflate(getApplicationContext(), R.layout.alert_set_password, null);
这个地方获得了View,下面绑定控件的时候就需要用View.findViewById(),但是我一直没注意到自己漏掉了View,所以补上View就可以了。
private void showEnterPasswordDialog() {
builder = new android.app.AlertDialog.Builder(HomeActivity.this);
View view = View.inflate(getApplicationContext(), R.layout.alert_set_password, null);
et_password = (EditText) view.findViewById(R.id.et_password);
et_password_confirm = (EditText) view.findViewById(R.id.et_password_confim);
bt_cancel = (Button) view.findViewById(R.id.bt_cancel);
bt_ok = (Button) view.findViewById(R.id.bt_ok);
bt_cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//取消密码框
dialog.dismiss();
}
});
bt_confim.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// //确认密码
dialog.dismiss();
}
});
builder.setView(view);
dialog = builder.show();
下面贴一些自己在stackoverflow上搜的文章:
https://stackoverflow.com/questions/32462658/intellij-idea-warning-value-is-never-used