Tôi đang gặp sự cố với sự kiện báo cáo OrientationEventListener
ngay cả sau khi tôi đã vô hiệu hóa sự kiện đó.onOrientationChanged() đang được gọi khi OrientationEventListener bị tắt
Tôi đang làm việc với ba đoạn trong bố cục tab và chỉ một trong các đoạn cần thay đổi hướng. Khi tôi rời khỏi đoạn này, tôi muốn các sự kiện định hướng dừng lại có hiệu lực.
Phần vòng đời của mã của tôi là như sau:
@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();
}
vấn đề này được đưa ra khi tôi chuyển đổi các đoạn trong khi di chuyển thiết bị. Khi tôi cố gắng gọi getActivity()
trong onOrientationChanged(int angle)
của số OrientationEventListener
, cuộc gọi trả về null, có nghĩa là tôi nhận được ngoại lệ con trỏ null nếu tôi cố gắng sử dụng nó.
Trong khi tôi có thể thêm một kiểm tra trống ở đây, tôi chỉ muốn biết lý do tại sao tôi nhận được sự kiện định hướng khi tôi đã vô hiệu hóa người nghe rõ ràng. Nếu tôi kiểm tra OrientationEventListener
tại điểm hỏng hóc, nó thậm chí còn báo cáo mEnabled=false
. Có cách nào để ngăn sự kiện được truyền cho người nghe của tôi không?
Hi Sleeke, bạn đã tìm thấy giải pháp nào cho việc này chưa. Tôi đang đối mặt với cùng một vấn đề. –