【已解决】 关于使用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行呀,空指针。
空指针就考虑创建和调用的时序问题。
你调用的时候没有创建,或者没有赋值,那就为空了。