【问题标题】:Null Pointer Exception while trying creating a general object - Android尝试创建通用对象时出现空指针异常 - Android
【发布时间】:2014-10-29 06:33:40
【问题描述】:

我有一个简单的通用类,它应该给我正在运行的设备的宽度和高度: 设备信息.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();
}
}

当我尝试在我的活动中创建一个对象时,我得到一个空指针异常。这是为什么?我猜我的问题出在 Context 参数上,但我不知道如何解决这个问题。 提前致谢。

【问题讨论】:

    标签: java android properties nullpointerexception android-studio


    【解决方案1】:

    将cx的初始化顺序改为:

    public deviceInfo(Context context)
    {
        this.cx=context;
        this.width = getDeviceWidth();
        this.height = getDeviceHeight();
    
    }
    

    Nullpointer 可能在包含代码的行中:

    WindowManager wm = (WindowManager) cx.getSystemService(Context.WINDOW_SERVICE);
    

    其中,cx 显然会为空,因为这些函数是在代码中初始化 cx 之前调用的。

    【讨论】:

      【解决方案2】:

      您在初始化之前访问cx 变量,因此它会导致NullPointerException。返工到

      this.cx=context;
      this.width = getDeviceWidth();
      this.height = getDeviceHeight();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-16
        • 2020-11-13
        • 1970-01-01
        相关资源
        最近更新 更多