मुझे ViewPager के साथ कोई समस्या है जहां मेरी ListView इसकी स्क्रॉल स्थिति खो रहा है।ViewPager को स्वाइप करते समय FragmentSaveInstanceState पर कॉल नहीं करता है?
ListView के राज्य आसानी से संग्रहित किया जा सकता है और का उपयोग कर बहाल:
@Override
public View onCreateView (LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
View v = inflater.inflate(R.layout.frag_cool_things, container, false);
AdvListView listView = (AdvListView) v.findViewById(R.id.lv0);
listView.setOnItemClickListener(mOnListItemClicked);
if (null != savedInstanceState)
{
listView.onRestoreListViewInstanceState(savedInstanceState.getParcelable("list_state"));
}
mListView = listView;
return v;
}
@Override
public void onSaveInstanceState (Bundle outState)
{
super.onSaveInstanceState(outState);
outState.putParcelable("list_state", mListView.onSaveListViewInstanceState());
}
हालांकि समस्या कहा जाता हो जाता है कि जब टुकड़े स्वाइप किया जा रहा है onDestroyView()
है, लेकिन onSaveInstanceState (Bundle outState)
कॉल कभी नहीं।
स्क्रीन घुमाने और ListView
स्थिति को ठीक से पुनर्स्थापित करता है लेकिन स्वाइप करने से मैं यह नहीं समझ सकता कि सूची को कैसे पुनर्स्थापित करना है।
मेरा अपना अस्थायी समाधान सिर्फ OnPause() में SharedPreferences को मेरा सामान लिखते हैं, और (OnCreateView में उन्हें वापस पाने के लिए है ...)। हालांकि, आपको साझािकरण (getActivity()। GetSharedPreferences (...)) प्राप्त करने के लिए अटैचिंग गतिविधि तक पहुंचने के लिए मजबूर करता है, और जब गतिविधि टूट जाती है तो आपको अनचाहे सामान को स्पष्ट रूप से हटाने की आवश्यकता हो सकती है (आप जो भी हो भंडारण, कांटा)। उम्मीद है कि किसी के पास बेहतर तरीका है! :) –
कृपया अद्यतन उत्तर देखें :) – Jona
"FragmentPagerAdapter प्रत्येक टुकड़े को अलग कर देगा जब आप सूची के माध्यम से स्वाइप करेंगे, लेकिन उन्हें स्मृति में रखें ताकि जब उपयोगकर्ता वापस स्वाइप हो जाए तो उन्हें आसानी से दोबारा जोड़ा जा सके। यदि आपके पास बड़ी संख्या में टुकड़े हैं, तो FragmentStatePagerAdapter पर विचार करने लायक है क्योंकि यह उन्हें हटा देगा, क्योंकि डाउनसाइड को पुनर्निर्मित करने की आवश्यकता है क्योंकि उपयोगकर्ता उन्हें वापस स्वाइप करता है। इसलिए, यदि आपके पास कम, अधिक जटिल टुकड़े हैं, तो FragmentPagerAdapter समझ में आता है, लेकिन बड़े सेट के लिए FragmentStatePagerAdapter पर विचार करें। " (एंड्रॉइड देव ब्लॉग) –