问题描述
- 关于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; } } }
解决方案
调试下,看下具体哪个变量是null的。
解决方案二:
大概知道是什么原因了,重写的类不会被系统框架回调 不知道怎么解决
时间: 2024-09-21 18:21:31