5

मुझे इसे अक्षम करने के बाद भी 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(); 
} 

समस्या आता है जब मैं टुकड़ा स्विच डिवाइस चलती है, जबकि:

मेरी कोड के जीवन चक्र के भाग इस प्रकार है। जब मैं onOrientationChanged(int angle)OrientationEventListener में getActivity() पर कॉल करने का प्रयास करता हूं, तो कॉल शून्य लौटाता है, जिसका अर्थ है कि यदि मैं इसका उपयोग करने का प्रयास करता हूं तो मुझे शून्य सूचक अपवाद मिलता है।

जबकि मैं यहां एक शून्य जांच जोड़ सकता हूं, मैं सिर्फ यह जानना चाहता हूं कि जब मैंने श्रोता को स्पष्ट रूप से अक्षम कर दिया है तो मुझे एक अभिविन्यास कार्यक्रम क्यों मिल रहा है। यदि मैं विफलता के बिंदु पर OrientationEventListener का निरीक्षण करता हूं, तो यह mEnabled=false की रिपोर्ट भी करता है। क्या मेरे श्रोता को प्रचारित होने से रोकने का कोई तरीका है?

+0

हाय स्लेके, क्या आपको इसके लिए कोई समाधान मिला है। मुझे एक ही समस्या का सामना करना पड़ रहा है। –

उत्तर

0

यदि आप ओरिएंटेशन को ActivityInfo.SCREEN_ORIENTATION_SENSOR पर सेट करते हैं, तो गतिविधि स्वचालित रूप से भौतिक अभिविन्यास सेंसर द्वारा घुमाया जाएगा। https://developer.android.com/reference/android/R.attr.html#screenOrientation

गतिविधि के लिए अभिविन्यास मोड को रीसेट करके इसे हल करें। उदाहरण के लिए, डिफ़ॉल्ट पोर्ट्रेट लेआउट पर रीसेट करें:

mOrientationEventListener.disable(); 
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
संबंधित मुद्दे