2012-05-23 2 views
11

मैं एक आवेदन में android.support.v4.view.ViewPager का उपयोग कर रहा हूं।ViewPager का उपयोग करते समय savedInstanceState को कैसे संभालें?

जब उपयोगकर्ता स्क्रीन को घुमाता है, तो गतिविधि नष्ट हो जाती है और फिर से बनाई जाती है। वर्तमान में ViewPager (आमतौर पर स्क्रीन पर एक, इसके बाईं ओर वाला एक, और इसके दाईं ओर वाला) में सक्रिय होने वाले टुकड़े savedInstanceState पर संग्रहीत हैं।

एक नई गतिविधि बनाई गई है, FragmentActivity.onCreate(savedInstanceState) को खंड राज्य के साथ बुलाया जाता है, और उन तीन टुकड़ों को बंडल का उपयोग करके फिर से बनाया जाता है। हालांकि, मेरे onCreate भी ViewPager और ViewPager एडाप्टर सेट अप करता है, जो अपने स्वयं के टुकड़े दोबारा बनाते हैं, जिसके परिणामस्वरूप उन तीन टुकड़ों में से प्रत्येक में से दो में से दो होते हैं।

मैं अपने ViewPager के एडाप्टर के साथ स्वचालित रूप से पुन: निर्मित टुकड़ों को कैसे स्क्रैच से फिर से बनाने के बजाय जोड़ सकता हूं?

उत्तर

17

कोई बात नहीं। ऐसा प्रतीत होता है कि मैं FragmentPagerAdapter गलत तरीके से उपयोग कर रहा था।

FragmentPagerAdapter का उपयोग करने का सही तरीका getItem() में अपना नया टुकड़ा तुरंत चालू करना है। मैं एडाप्टर के कन्स्ट्रक्टर में अपने सभी टुकड़ों को तुरंत चालू कर रहा था, उन्हें एक सरणी में संग्रहीत कर रहा था, और फिर उन्हें सरणी में देख रहा था और उपयुक्त टुकड़े को getItem() में वापस कर रहा था।

यदि आप getItem() से अपने टुकड़े को तुरंत चालू करते हैं, तो FragmentPagerAdapter.instantiateItem() स्वचालित रूप से एक नया चालू करने के बजाय रीसायकल खंड का उपयोग करेगा।

+0

आप एक lifesaver हैं, धन्यवाद। – Simon