2012-07-01 17 views
5

मैंने इस समस्या के बारे में कई पोस्ट पढ़ी हैं [इस लिंक] [1] और एक समाधान ओरिएंटेशन कॉन्फ़िगरेशन जोड़ता है चेंज को प्रकट करने और संभालने के लिए कॉन्फ़िगरेशन कॉन्फ़िगरेशन ईवेंट को रोकने के लिए क्रिएटेशन गतिविधि को फिर से कॉल करने के लिए फिर से कॉल किया जाना चाहिए। मैंने ऐसा किया और घटना ठीक से ट्रिगर हो गई, हालांकि, इस निष्पादन के बाद, क्रिएट विधि को भी निष्पादित किया गया है! क्यूं कर? मुझे क्या याद आ रहा है धन्यवादओरिएंटेशन गतिविधि बदलती है जब अभिविन्यास बदलता है

प्रकट,

<activity 
      android:name="webPush" 
      android:configChanges="keyboardHidden|orientation"/> 

गतिविधि

@Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
     setContentView(R.layout.vistaaib); 
    } 

@Override 
    protected void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.vistaaib); 
... 

उत्तर

11

मुझे लगता है कि यह काम करेगा .........

<activity android:name=".MyActivity" 
      android:configChanges="orientation|keyboardHidden" 
      android:label="@string/app_name"> 

एंड्रॉयड 3.2 (एपीआई स्तर 13), इच्छा "स्क्रीन के साथ शुरू आकार "तब भी बदलता है जब डिवाइस पोर्ट्रेट और लैंडस्केप ओरिएंटेशन के बीच स्विच करता है। इस प्रकार, यदि आप उन्मुखीकरण परिवर्तन के कारण क्रम पुनरारंभ को रोकने के लिए चाहते हैं जब एपीआई स्तर 13 या इससे अधिक के लिए विकासशील आप

android:configChanges="orientation|screenSize" 
+0

अभी भी ऑनफ्रैग चेंज इवेंट – Jaume

+0

पर क्रिएटिव पर ट्रिगर कर रहा है क्या आपने एंड्रॉइड मैनेजमेंट फ़ाइल में उस गतिविधि के तहत इसका उल्लेख किया है जिसे क्रिएट() –

+0

पर पोस्ट करने से रोका जाना चाहिए, जैसा कि पोस्ट किया गया है, वेबपश वह गतिविधि है जिस पर इसकी क्रेट विधि को – Jaume

1

लिखें कि गतिविधि में मैनिफ़ेस्ट फ़ाइल में कोड के इस दो पंक्तियों।

ऐसा लगता है कि यह आपकी समस्या का समाधान करेगा। <activity android:name=".YourActivity" android:configChanges="orientation|keyboardHidden"/>

+0

अभी भी ट्रिगर onCreate onConfigChanges घटना के बाद – Jaume

1

आपकी गतिविधि किसी भी कॉन्फ़िगरेशन परिवर्तन पर पुनरारंभ की जाएगी। सबसे अधिक संभावना है कि इसे पुनरारंभ किया जा रहा है क्योंकि कुंजीपटल स्थिति बदलती है। गतिविधि के गुणों को यह जोड़ने का प्रयास करें:

android:configChanges="orientation|keyboard|keyboardHidden" 
+0

अभी भी onConfigChanges घटना – Jaume

+1

के बाद onCreate ट्रिगर अगर आप उन्मुखीकरण के कारण क्रम पुनरारंभ रोकना चाहते हैं एपीआई स्तर 13 या उच्चतर के लिए विकास करते समय बदलें, आपको "अभिविन्यास" मान के अतिरिक्त "स्क्रीनसाइज" मान शामिल करना होगा। यही है, आपको एंड्रॉइड को डीकलेयर करना होगा: configChanges = "ओरिएंटेशन | स्क्रीनसाइज" – Rashid

0

का उपयोग करना चाहिए आप एपीआई स्तर 12 या कम

के लिए काम कर रहे हैं menifest फ़ाइल में डाल अपना गतिविधि नाम घोषित करने के बाद ही।

android:configChanges="orientation" 

e.g.-

<activity 
     android:name=".NameOfYourActivity" 
     android:configChanges="orientation"/> 

और एंड्रॉयड 3.2 (एपीआई स्तर 13) या उच्चतर संस्करण स्क्रीन आकार में भी रोटेशन पर परिवर्तन तो भी इस की घोषणा बदलता रहता है।

इस के लिए

,

android:configChanges="orientation|screenSize" 
2

मैं ऐसा किया। मैंने यह कोड प्रकट करने के लिए जोड़ा और यह सही काम करता है।

<activity 
     android:name="?" 
     android:label="@string/?" 
     android:theme="@style/?" 
     android:configChanges="orientation|screenSize"> 

यदि डिवाइस रोटेशन होने पर आप कुछ बदलना चाहते हैं तो आपको इसे अपने तहत गतिविधि में जोड़ना होगा।

public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    // Checks the orientation of the screen 
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
     Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show(); 
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){ 
     Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show(); 
    } 
} 
0

के बाद कारण

घटना हो सकता है: screenSize

वर्तमान उपलब्ध स्क्रीन आकार बदल गया है। यह वर्तमान पहलू अनुपात के सापेक्ष वर्तमान में उपलब्ध आकार में परिवर्तन का प्रतिनिधित्व करता है, इसलिए जब उपयोगकर्ता परिदृश्य और चित्र के बीच स्विच करता है तो बदल जाएगा।हालांकि, यदि आपका एप्लिकेशन एपीआई स्तर 12 या उससे कम लक्षित करता है, तो आपकी गतिविधि हमेशा इस कॉन्फ़िगरेशन को स्वयं ही बदलती है (यह कॉन्फ़िगरेशन परिवर्तन आपकी गतिविधि को पुनरारंभ नहीं करता है, यहां तक ​​कि एंड्रॉइड 3.2 या उच्चतर डिवाइस पर चलते समय भी)। एपीआई स्तर 13.

तो "अभिविन्यास" के साथ में जोड़ा गया "screenSize" के रूप में जोड़

संबंधित मुद्दे