我有这个简单的通用类,它应该给我运行设备的宽度和高度: deviceInfo.c
public class deviceInfo
{
private float width;
private float height;
private Context cx;
public deviceInfo(Context context)
{
this.width = getDeviceWidth();
this.height = getDeviceHeight();
this.cx=context;
}
public int getDeviceHeight()
{
WindowManager wm = (WindowManager) cx.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
return display.getHeight();
}
public int getDeviceWidth()
{
WindowManager wm = (WindowManager) cx.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
return display.getWidth();
}
}
当我尝试在我的活动中创建一个对象时,我得到一个Null指针异常。这是为什么?因为我猜我的问题是关于Context参数,但我不知道如何解决这个问题。 提前谢谢。
答案 0 :(得分:2)
将cx的初始化顺序更改为:
public deviceInfo(Context context)
{
this.cx=context;
this.width = getDeviceWidth();
this.height = getDeviceHeight();
}
Nullpointer可以在包含代码的行中:
WindowManager wm = (WindowManager) cx.getSystemService(Context.WINDOW_SERVICE);
其中,cx显然为null,因为在代码中初始化cx之前会调用这些函数。
答案 1 :(得分:2)
您在初始化之前访问cx
变量,因此导致NullPointerException
。返工
this.cx=context;
this.width = getDeviceWidth();
this.height = getDeviceHeight();