Java 安卓,为什么说var为null
我有一个扩展类,在类中有一个var,我通过值定义它,但说它是nullJava 安卓,为什么说var为null,java,android,nullpointerexception,Java,Android,Nullpointerexception,我有一个扩展类,在类中有一个var,我通过值定义它,但说它是null public class CalendarCell extends TextView { public static final String TAG = "CalendarCell"; protected ArrayList<Integer> cellStates = new ArrayList<>(); public CalendarCell(Context context)
public class CalendarCell extends TextView
{
public static final String TAG = "CalendarCell";
protected ArrayList<Integer> cellStates = new ArrayList<>();
public CalendarCell(Context context)
{
super(context);
}
public CalendarCell(Context context, AttributeSet attrs)
{
super(context, attrs);
}
public CalendarCell(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
}
@Override
protected int[] onCreateDrawableState(int states)
{
int newStatesSize = cellStates.size(); // Error here (null)
if (newStatesSize > 0)
{
...
}
else
{
return super.onCreateDrawableState(states);
}
}
public void resetStates()
{
cellStates.clear();
}
public void addState(int state)
{
if(!cellStates.contains(state))
cellStates.add(state);
}
}
使
cellStates
final如下:
protected final ArrayList<Integer> cellStates = new ArrayList<>();
protectedfinal ArrayList cellStates=new ArrayList();
是否尝试将cellState设置为静态?请编辑并显示异常的完整堆栈跟踪。我想知道这是否真的是从超类构造函数调用的。我添加了final,但得到了错误so@ali这几乎是不可能的,最后一个字段不能更改,您正在声明中初始化它。代码中一定有其他东西不起作用。当我添加blow代码时,它解决了问题。如果(cellStates==null)cellStates=newarraylist();但是为了提高速度,我想去掉这个pice@ali你一定错过了什么。尝试调试代码并检查字段的值分配。
protected final ArrayList<Integer> cellStates = new ArrayList<>();