2 mao 172985041 mao_172985041 于 2016.05.02 00:35 提问

关于Checbox的OnCheckedChangeListener为什么我写个外部内传控件过来一直空指针,写内部内没问题?
 import java.util.List;
 import android.util.Log;
 import android.widget.CheckBox;
 import android.widget.CompoundButton;
 import android.widget.CompoundButton.OnCheckedChangeListener;

public class Boxlistener  implements OnCheckedChangeListener{
private int type;
private CheckBox cball;
private List<CheckBox> boxs ;
private boolean bool;
public static final int PARENT_BOX=0;
public static final int CHILD_BOX=1;

public Boxlistener(int type) {
    this.type = type;
}

public Boxlistener(int type, CheckBox cball, List<CheckBox> boxs) {
    this.type = type;
    this.cball = cball;
    this.boxs = boxs;
}

@Override
public void onCheckedChanged(CompoundButton buttonView,
        boolean isChecked) {
    switch (type) {
    case PARENT_BOX:
        Log.i("delong","此时父类状态为:"+cball.isChecked());
        cball.setChecked(true);
        if (cball.isChecked()) {
            for (CheckBox box : boxs) {
                box.setChecked(true);
            }
        }else{
            if (!bool) {
                for (CheckBox box : boxs) {
                    box.setChecked(false);
                }
            }else{
                bool=false;
            }
        }
        break;
    case CHILD_BOX:
        Log.i("delong", "当前box状态为:"+cball.isChecked());
        if (cball.isChecked()) {
            Log.e("delong", "当前box状态为:"+isChecked);
            if (isChecked) {

            }else{
                bool = true;
                cball.setChecked(false);
            }
        }else{
            if (isChecked) {
                for (int i=0 ; i<boxs.size();i++) {
                    for(int j= i+1;j<boxs.size();j++){
                        if ((""+boxs.get(j).isChecked()).equals(""+boxs.get(j-1).isChecked())) {
                            if (j==boxs.size()-1) {
                                cball.setChecked(true);
                            }
                        }else{
                            return;
                        }    
                    }
                }
            }
        }
        break;
    }
}
}

2个回答

caozhy
caozhy   Ds   Rxr 2016.05.02 04:31
已采纳

调试下,看下具体哪个变量是null的。

mao_172985041
mao_172985041   2016.05.06 20:55

大概知道是什么原因了,重写的类不会被系统框架回调 不知道怎么解决

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
为什么我的控件实例化后还是报空指针异常?
我的TextView明明实例化了,为啥setText时候还是给我报空指针异常啊!?
如何在block内部修改外部变量
默认情况下,在block中访问的外部变量是复制过去的,即:写操作不对原变量生效。但是你可以加上 __block 来让其写操作生效,示例代码如下: __block int a = 0; void (^foo)(void) = ^{ a = 1; }; foo(); //这里,a的值被修改为1 你同样可以在面试中这样回答,但你并没有答到“点子上”。真正的原因,并没有书这本书里写的这么“神
Fragment 控件空指针问题
错误情景描述: activity_main: LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientat
内部比较器Comparable和外部比较器Comparator
内部比较器Comparable和外部比较器Comparator
android使用include调用内部组件报空指针异常解决方案
使用fragment布局时,在onCreateView方法下初始化include的xml中的控件会报空指针,但是获取include的id是OK的 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
LinearLayout 内部 挂件 居中
LinearLayout 内部 挂件 居中 Posted by androidfoot on August 10, 2010 Leave a comment (0)Go to comments 直接设置LinearLayout内部挂件 :android:layout_g
sql语句没问题,在数据库运行ok ,也查出了数据,但就是显示的时候报空指针异常..
为什么呢 ? 在网上搜索,说是我获取的Session有问题,我去看了下 ,也没问题,是ok的 于是我猜想,可能是我的全局配置出了问题,哎呀我勒个去,我一看就看到了问题的关键,原来我关闭了自动映射匹配机制,然后我开启了他 ,问题解决,荣获java 福斯特布拉德 问题就在这句上
view的空指针异常(Kotlin)
这种空指针问题是在Fragment的onCreateView()中自定义方法中调用控件遇到的   接下来解释下原因 : java:   控件的调用都是通过熟知的findViewById()    所以调用的控件对象是存储在内存中的 Kotlin:    相比java,可以直接省去所有findViewById()的模板方法( 可以直接调用控件通过控件本身的id)
外部时钟与内部时钟区别、作用、使用条件
/****************************************************************************************************************** 原文地址:http://zhidao.baidu.com/question/96722533.html 说明:学习《时钟与定时器驱动程序设计》时迷糊了外部内部时钟的
OC 重点block-------2-------block内部访问外部变量的问题
1).在block 代码块的内部,可以取定义在外部的变量的值,定义在外部的局部变量和全局变量         2).在block代码块中可以修改全局变量的值,但是不能修改定义在外部的局部变量的值。(如果希望定义的的局部变量,可以允许block代码的内部去修改,那么就在局部变量加上一个__block)   #import typedef void