OrientationEventListener
即使在我禁用它之后,我也遇到了报告事件的问题。
我正在使用选项卡布局中的三个片段,并且只有一个片段需要更改方向。当我离开这个片段时,我希望方向事件停止产生影响。
我的代码的生命周期部分如下:
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
if (orientationEventListener == null)
{
Log.w(LogTags.MOBILE_MONITOR, "Creating orientationListener in " + this.toString());
orientationEventListener = new OrientationEventListener(getActivity(), SensorManager.SENSOR_DELAY_NORMAL) {
@Override
public void onOrientationChanged(int angle) {
...Do work using getActivity()...
}
};
}
}
@Override
public void onResume() {
super.onResume();
orientationEventListener.enable();
}
@Override
public void onPause() {
super.onPause();
orientationEventListener.disable();
}
当我在移动设备时切换片段时出现问题。当我尝试调用getActivity()
时onOrientationChanged(int angle)
,OrientationEventListener
调用返回 null,这意味着如果我尝试使用它,我会得到一个空指针异常。
虽然我可以在这里添加一个空检查,但我只想知道当我明确禁用侦听器时为什么会收到一个方向事件。如果我OrientationEventListener
在故障点检查 ,它甚至会报告mEnabled=false
. 有什么方法可以防止事件传播给我的听众?