【已解决】 关于使用Dialog时的空指针不知如何解决(更新一直卡,就重新提问了)
1.我在recyclerview的item里面加了一个按钮,预计效果是点击按钮跳出弹框,但是程序在点击按钮后崩溃,错误信息如下:

2.代码非常简单,就是一个最基础的弹框功能,点击效果和弹窗都在DeviceActivity里,点击触发在RecyclerAdapter里。程序运行到builder实例化这里就崩溃了:
//弹框
private void showLogDialog() {
context = DeviceActivity.this;
Log.d(TAG, String.valueOf(context));
builder = new AlertDialog.Builder(context).setIcon(R.mipmap.user).setTitle("Log信息")
.setMessage("this is a dialog").setPositiveButton("确定(积极)", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
//ToDo: 你想做的事情
Toast.makeText(DeviceActivity.this, "确定按钮", Toast.LENGTH_LONG).show();
}
}).setNegativeButton("取消(消极)", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
//ToDo: 你想做的事情
Toast.makeText(DeviceActivity.this, "关闭按钮", Toast.LENGTH_LONG).show();
dialogInterface.dismiss();
}
});
builder.create().show();
}
//按钮的点击事件
public View.OnClickListener click(View v){
View.OnClickListener clickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, String.valueOf(v.getId()));
MQTTService.subscribe(Constants.subTopic);
switch (v.getId()){
case R.id.btn_item_poweron:
Log.d(TAG,"点击了power按钮");
power = !power;
if(mThread == null){
mThread = new Thread(runnable);
mThread.start();
}
break;
case R.id.btn_item_config:
Log.d(TAG,"点击了config按钮");
break;
case R.id.btn_item_log:
Log.d(TAG,"点击了log按钮");
showLogDialog();
}
}
};
return clickListener;
}
RecyclerAdapter中调用
btn_log.setOnClickListener(deviceActivity.click(btn_log));
3.相关补充:
第一次发帖,有格式不对的或者别的问题望指正,希望各位不吝赐教。
有在群里吗?你把deviceActivity.click也发我看一下,艾特一下我
是低级错误。已解决。
已解决。
153行有问题啊。有个对象是null
DeviceActivity153行呀,空指针。
空指针就考虑创建和调用的时序问题。
你调用的时候没有创建,或者没有赋值,那就为空了。