Android javaNullPointer-on-display.getRotation()
在注释了所有代码以了解错误的位置后,我发现它来自mDisplay.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
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();