5

即使在禁用它之后,我仍然遇到OrientationEventListener报告事件的问题。当OrientationEventListener被禁用时,onOrientationChanged()被调用

我正在使用标签布局中的三个片段,并且只有一个片段需要方向更改。当我离开这个片段时,我希望定向事件停止产生效果。

我的代码的生命周期部分如下:

@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(),OrientationEventListeneronOrientationChanged(int angle)时,该调用返回null,这意味着如果我尝试使用它,则会得到空指针异常。

虽然我可以在这里添加一个空检查,但我只想知道为什么当我清楚地禁用了侦听器时,我得到了一个方向事件。如果我在故障点检查OrientationEventListener,它甚至会报告mEnabled=false。有没有办法阻止事件传播给我的听众?

+0

您好Sleeke,你有没有找到任何解决方案。我面临同样的问题。 –

回答

相关问题