尝试创建一般对象时出现空指针异常 - Android

时间:2014-09-04 13:22:51

标签: java android properties nullpointerexception android-studio

我有这个简单的通用类,它应该给我运行设备的宽度和高度: 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参数,但我不知道如何解决这个问题。 提前谢谢。

2 个答案:

答案 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();