Android javaNullPointer-on-display.getRotation()

Android javaNullPointer-on-display.getRotation(),android,nullpointerexception,accelerometer,android-sensors,displayobject,Android,Nullpointerexception,Accelerometer,Android Sensors,Displayobject,在注释了所有代码以了解错误的位置后,我发现它来自mDisplay.getRotation()。 我的代码的总体思路是,当加速度计处于任何方向时,从加速度计获得良好的信息。 这是我的密码 public void onSensorChanged(SensorEvent event) { // TODO Auto-generated method stub // Récupérer les valeurs du capteur float x, y, z; String

在注释了所有代码以了解错误的位置后,我发现它来自mDisplay.getRotation()。 我的代码的总体思路是,当加速度计处于任何方向时,从加速度计获得良好的信息。 这是我的密码

public void onSensorChanged(SensorEvent event) {
    // TODO Auto-generated method stub
    // Récupérer les valeurs du capteur
    float x, y, z;
    String s1 = "stringX", s2 = "stringY", s3 = "stringZ";

    if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {

        switch (mDisplay.getRotation()) {
        case Surface.ROTATION_0:
            x = event.values[0];
            y = event.values[1];
            s1 = "" + x;
            s2 = "" + y;
            break;
        case Surface.ROTATION_90:
            x = -event.values[1];
            y = event.values[0];
            s1 = "" + x;
            s2 = "" + y;
            break;
        case Surface.ROTATION_180:
            x = -event.values[0];
            y = -event.values[1];
            s1 = "" + x;
            s2 = "" + y;
            break;
        case Surface.ROTATION_270:
            x = event.values[1];
            y = -event.values[0];
            s1 = "" + x;
            s2 = "" + y;
            break;
        }
        z = event.values[2];   
        s3 = "" + z;

        tvx.setText(s1);
        tvy.setText(s2);
        tvz.setText(s3);

    }
}
我还使用

但是我仍然有javaNullPointer:s

谢谢大家。

你们需要

mDisplay = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();

顺便说一句,找出抛出异常的位置的一种更简单的方法是读取logcat中的错误消息。他们给了你确切的文件和行号。我给了,但不是很明确,也没有给我确切的行号,它只给了我一个函数onSensorChanged()的问题:谢谢你,Hoan,你完美地回答了我的问题!
mDisplay = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();