5

अभिविन्यास परिवर्तन पर, गतिविधि को फिर से बनाया गया है और दिनांक समय संवाद भी पुनर्निर्मित किया गया है। मैं उस समय के समय संवाद को सहेजना चाहता हूं जिसे उपयोगकर्ता द्वारा बदला गया है।अभिविन्यास परिवर्तन पर डेटाटाइम संवाद की स्थिति को कैसे बनाए रखा जाए?

डायलॉग को खारिज करने से पहले मैं डेट टाइम डायलॉग की स्थिति को बनाए रखना चाहता हूं।

नोट, मैं SaveInstanceState पर संवाद को खारिज कर सकता हूं, जहां मेरे पास बंडल उपलब्ध है। लेकिन, यह भी कहा जाता है जब गतिविधि रोके गए राज्य में जाती है, और उस स्थिति में मैं संवाद को खारिज नहीं करना चाहता हूं। इसलिए, इसे डेस्ट्रॉय विधि पर खारिज करने का फैसला किया, लेकिन मेरे पास बंडल ऑब्जेक्ट नहीं है। यही कारण है कि मुझे इस समस्या का सामना करना पड़ रहा है। क्या ऑनस्ट्राय में बंडल तक पहुंचने का कोई तरीका है? या मेरी समस्या के लिए कोई अन्य सुझाव की सराहना की जाएगी।

@Override 
protected void onDestroy() { 
    if(dateTimeDialog !=null && dateTimeDialog.isShowing()) 
    { 
     //<HERE I WANT THE STATE TO BE SAVED IN THE BUNDLE> 
     dateTimeDialog.dismiss(); 
    } 
    super.onDestroy(); 
} 

असल में हम अगर उपयोगकर्ता हमारे आवेदन से दूर ले जाने, और पर स्क्रीन अनलॉक आवेदन ताला और संवाद वह देख रहा है फिर से शुरू कर रहे हैं। और यदि हमने सहेजे गए इंस्टेंसस्टेट पर संवाद को खारिज कर दिया है, तो एप्लिकेशन को अनलॉक करने के बाद यह रीस्टार्ट पर शुरू होता है, प्रारंभ और फिर से शुरू करता है, जहां इनमें से कोई भी पैरामीटर के रूप में प्रदान किए गए बंडल का उदाहरण नहीं है।

इसके अलावा, हमारे पास लैंडस्केप & चित्र के लिए अलग-अलग लेआउट हैं, जिनके कारण हम मेनिफेस्ट फ़ाइल में configChanges = "ओरिएंटेशन" सेट नहीं कर सकते हैं।

+2

'डेटपिकरडियलोग' कक्षा में 'ऑनवेस्टेंसस्टेट()' और 'ऑनस्टोर इंस्टेंसस्टेट() 'विधियां हैं। –

उत्तर

0

तुम अब भी onSaveIsntanceState() में अपने संवाद राज्यों को बनाए रखने कर सकते हैं जोड़ने के बाद स्थिति की जानकारी देने, लेकिन केवल संवाद निरस्त onDestroy() में, जो आपकी आवश्यकता को पूरा करना चाहिए। हालांकि मुझे यकीन नहीं है कि onDestroy() में एक संवाद बर्खास्तगी क्या होगी।

+0

हाँ, यह सच है! और ठीक काम करता है लेकिन मैं अपने डिवाइस को अनलॉक करने के बाद संवाद को बरकरार रखना चाहता था और जब मैं SaveInstanceState() में संवाद को खारिज करता हूं तो यह भी कहा जाता है कि गतिविधि रोके गए राज्य में कब जाती है, और उस स्थिति में मैं संवाद को खारिज नहीं करना चाहता हूं। इसलिए, इसे डेस्ट्रॉय विधि पर खारिज करने का फैसला किया, लेकिन मेरे पास बंडल ऑब्जेक्ट नहीं है। – AndroidGeeks

0

android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" 

तरह

<application 
android:allowBackup="true" 
android:icon="@drawable/ic_launcher" 
android:label="@string/app_name" 
android:theme="@style/AppTheme" > 
<activity 
    android:name="com.example.demo.MainActivity" 
    android:label="@string/app_name" 
    android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" > 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 

     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

actvity टैग में मैनिफ़ेस्ट फ़ाइल में नीचे लाइन का उपयोग करें और अपनी गतिविधि में विधि नीचे ओवरराइड।

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    // TODO Auto-generated method stub 
    super.onConfigurationChanged(newConfig); 
} 

onSaveInstanceState() और onRestoreInstanceState()

उपयोग करने के लिए कोई ज़रूरत नहीं कृपया मुझे ablove कोड

+0

मैंने प्रश्न अपडेट किया है और कारण बता रहा हूं कि मैं configChanges का उपयोग क्यों नहीं कर रहा हूं। – AndroidGeeks

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