本文主要是介绍MessageQueue-JNI: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.wid,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
昨天在敲代码的时候遇到这个问题搞了半天,今天下午又看看,终于解决了。完整的错误是这样的:
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() {@Overridepublic void onClick(View v) {//取消密码框dialog.dismiss();}});bt_confim.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {
// //确认密码dialog.dismiss();}});builder.setView(view);dialog = builder.show();
下面贴一些自己在stackoverflow上搜的文章:
https://stackoverflow.com/questions/22706709/exception-in-messagequeue-callback-handlereceivecallback
https://stackoverflow.com/questions/24298214/exception-dispatching-input-event-and-null-pointer-exception-on-swiperefreshlayo
https://stackoverflow.com/questions/32462658/intellij-idea-warning-value-is-never-used
这篇关于MessageQueue-JNI: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.wid的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!