में कैश किए गए टुकड़े अपडेट करें मेरे पास एक व्यूपेजर है जिसमें इसके खंड के अंदर कई टेक्स्ट व्यू हैं जिनमें उनके अलग-अलग फ़ॉन्ट आकार हैं। इसके अलावा, मुझे फ़ॉन्ट आकार को बढ़ाने/घटाने के लिए बटन मिलते हैं जो प्रत्येक डिफ़ॉल्ट आकार के फ़ॉन्ट आकार की गणना करते हैं, इसके डिफ़ॉल्ट आकार को जोड़कर एक मूल्य जिसे STEP कहा जाता है (जो inc/dec font size बटन द्वारा बदलता है)।
मेरी समस्या यह है कि यदि आकार परिवर्तन लागू करने के बाद पहली बार दृश्य प्रदर्शित होता है, तो यह क्रिएटिव व्यू() के दौरान वांछित आकार में टेक्स्ट व्यू बनाएगा, हालांकि अगर खंड पहले से ही कैश किया गया था और क्रिएटिव्यू को फिर से कॉल नहीं किया गया है, तो मुझे नहीं पता कि अपडेट कैसे करें उनके पाठ दृश्यों में से केवल एक कैश्ड टुकड़े पर विचार कर रहा है स्क्रीन पर प्रदर्शित होता है (और मैं इसे बिना किसी समस्या के अपडेट कर सकता हूं) लेकिन अन्य प्रदर्शित नहीं होते हैं (मुझे नहीं पता कि वे गतिविधि से जुड़े हैं या नहीं, इस मामले में नहीं)।
दूसरे शब्दों में मैं कैसे पता लगा सकता हूं कि ViewPager द्वारा कौन से टुकड़े कैश किए जाते हैं और उनके ऑनक्रेट व्यू को पहले से ही बुलाया जाता है (ये वे टुकड़े हैं जो उनके विचारों के लिए अपडेट किए जाने चाहिए)। अपने ViewPager
एडाप्टर के लिए एंड्रॉइड व्यूपेजर: ऑफ-स्क्रीन अपडेट करें लेकिन व्यूपेगर
उत्तर
आदेश ViewPager द्वारा कैश मदों की एक सूची रखने के लिए मुझे अपने कस्टम जो एक विस्तार एडाप्टर बदल: मैं नीचे चित्र में प्रश्न चिह्न के साथ हल्के हरे रंग में उन्हें चिह्नित FragmentStatePagerAdapter:
- मेरी एडाप्टर के लिए एक
HashMap<Integer, FragmentDipsplayPageContent> cachedFragmentHashMap
जोड़े अद्यतन GetItem() विधि इस
की तरह अंदर इस संग्रह का उपयोग कर
public HashMap<Integer, FragmentDipsplayPageContent> getCachedFragmentHashMap() { return cachedFragmentHashMap; }
अद्यतन:
public Fragment getItem(int index) { Fragment fragment = new FragmentDipsplayPageContent(); Bundle args = new Bundle(); args.putInt("INDEX", index); fragment.setArguments(args); cachedFragmentHashMap.put(index,fragment); return fragment; }
अद्यतन destroyItem() इस
@Override public void destroyItem(ViewGroup container, int position, Object object) { super.destroyItem(container, position, object); //add this line to remove fragments wiped from ViewPager cache cachedFragmentHashMap.remove(position); }
तरह एडाप्टर के विधि गतिविधि से कैश की गई टुकड़े का HashMap तक पहुँचने के लिए गेटर जोड़े गतिविधि:
private void increaseFontSizeForCachedFragments() { HashMap<Integer, FragmentDipsplayPageContent> cachedFragmentsHashMap = adapterViewPager .getCachedFragmentHashMap(); Collection<FragmentDipsplayPageContent> fragmentsCollection = cachedFragmentsHashMap .values(); for (FragmentDipsplayPageContent fragmentDipsplayPageContent : fragmentsCollection) { //update views of fragment fragmentDipsplayPageContent.increasTextFontSize(); } }
इस तरह सभी कैश किए गए टुकड़े दृश्यमान और ऑफ-स्क्रीन टुकड़े सहित अपडेट किए गए हैं।
उपयोग FragmentStatePagerAdapter
बजाय FragmentPagerAdapter
स्वीकृत उत्तर अच्छा है लेकिन आपको सभी वस्तुओं को कैश नहीं करना चाहिए। इसके बजाय, आप इस विधि का उपयोग कर सकते हैं:
mViewPager.setOffscreenPageLimit(int);
उदाहरण के लिए, छवि और एनिमेशन के साथ कई आइटम हैं। यदि आप उन सभी को कैश करते हैं, तो शायद यह OutOfMemoryError
के साथ परिणाम देगा। रोकने के लिए, आप पृष्ठ सीमा को कैश किए जाने के लिए परिभाषित कर सकते हैं।
संपादित करें: इसके बजाय HashMap<Integer, Object>
, SparseArray<Object>
का उपयोग करना बेहतर है।
सवाल यह है कि कैसे कैशिंग सक्षम किया गया है, हालांकि जब वे दिखाई नहीं दे रहे हैं तो अपडेट के लिए कैश किए गए आइटम तक पहुंच सकते हैं। – VSB
डिफ़ॉल्ट आकार क्या है? – Relm
यदि आप इस समाधान का उपयोग करते हैं तो आप कैश में स्क्रीन कैसे हटाते हैं? मेरे पास अभी यह समस्या है क्योंकि कैश पेज अपडेट नहीं होते हैं। –
- 1. एंड्रॉइड व्यूपेजर गलत जगह
- 2. एंड्रॉइड व्यूपेगर वर्टिकल स्वाइप का पता लगाएं
- 3. एंड्रॉइड व्यूपेजर
- 4. एंड्रॉइड के व्यूपेजर
- 5. एंड्रॉइड व्यूपेजर क्रॉसफ़ेड एनीमेशन
- 6. एंड्रॉइड - व्यूपेजर स्क्रॉलिंग रीसेट
- 7. html2canvas ऑफस्क्रीन
- 8. पेजरएडाप्टर/व्यूपेगर
- 9. व्यूपेजर स्क्रॉल आधा स्क्रीन
- 10. एंड्रॉइड कैसे अपडेट करें, लेकिन डेटाबेस जानकारी को बनाए रखें
- 11. स्विफ्ट - ऑफस्क्रीन प्रतिपादन
- 12. बनावट या ऑफस्क्रीन फ्रेमबफर
- 13. एंड्रॉइड व्यूपेजर ऑनपेजस्क्रॉलस्टेट चेंज को कभी भी
- 14. लंबन पृष्ठभूमि छवि के साथ एंड्रॉइड व्यूपेजर
- 15. व्यूपेजर की संवेदनशीलता को कैसे संशोधित करें?
- 16. सर्कुलर व्यूपेगर जो FragmentPagerAdapter
- 17. व्यूपेजर टुकड़े मनोरंजन, फिर से शुरू हो गए हैं लेकिन
- 18. एंड्रॉइड एप्लिकेशन अपडेट - कैसे करें?
- 19. टैबलायआउट और व्यूपेगर -टैब्स स्लाइडिंग ड्रॉवर आइटम
- 20. फ्रैगमेंट्स और व्यूपेजर
- 21. फ्रैगमेंट (व्यूपेगर में) से/एंड्रॉइड सेवा को बाध्यकारी और अनबाइंडिंग
- 22. एंड्रॉइड: व्यूफ्लिपर या व्यूपेगर - बेहतर विकल्प कौन सा है?
- 23. एंड्रॉइड: अपडेट
- 24. सक्रिय एंड्रॉइड अपडेट() क्वेरी
- 25. छवियों के साथ एंड्रॉइड व्यूपेजर: मेमोरी लीक/ऐप क्रैश
- 26. एंड्रॉइड आर 18 अपडेट
- 27. व्यूपेजर लूप कैसे बनाएं?
- 28. ग्रहण "एंड्रॉइड डेवलपर टूलकिट अपडेट करें"
- 29. व्यूपेजर में फ्रैगमेंट
- 30. वेबव्यू के साथ व्यूपेजर वेबव्यू
मैं वर्तमान में FragmentStatePagerAdapter का उपयोग कर रहा हूं। – VSB
अच्छी तरह से, यह मेरे लिए काम किया और मेरा समय बचाया। बहुत बहुत धन्यवाद! – mohnage7
क्लाइंट पेजर का उपयोग कर पेजर का उपयोग कर रहा था ... और यह ऑनलाइन डेटा के उचित आकार को लोड कर रहा था, इसलिए यह 30+ पृष्ठों के बाद लटक रहा था। .. इस समाधान के लिए धन्यवाद। –