के अंदर टुकड़े संदर्भित करना मुझे एक ViewPager के अंदर मेरे टुकड़ों को संदर्भित करने में समस्या है। मैं ऐसा करना चाहता हूं क्योंकि मेरी गतिविधि से मैं एक निर्दिष्ट स्थिति (जैसे वर्तमान में प्रदर्शित खंड) पर एक टुकड़ा ताज़ा करना चाहता हूं।ViewPager
वर्तमान में मैं कुछ इस तरह है:
public static class MyPagerAdapter extends FragmentPagerAdapter {
private static final String TAG = "MyPagerAdapter";
private static HashMap<Integer, EventListFragment> mPageReferenceMap = new HashMap<Integer, EventListFragment>();
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return NUM_ITEMS;
}
@Override
public Fragment getItem(int position) {
Log.i(TAG, "getItem: "+position);
int dateOffset = position-1;
EventListFragment mFragment = EventListFragment.newInstance(dateOffset);
mPageReferenceMap.put(position, mFragment);
return mFragment;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
Log.i(TAG, "destroyItem: "+position);
mPageReferenceMap.remove(position);
super.destroyItem(container, position, object);
}
public EventListFragment getFragment(int key) {
Log.i(TAG, "Size of pager references: "+mPageReferenceMap.size());
return mPageReferenceMap.get(key);
}
}
समस्या यह है कि destroyItem()
अधिक बार getItem()
से बुलाया जाता है, इसलिए मैं अशक्त संदर्भ के साथ छोड़ दिया हूँ। यदि मैं नष्ट टुकड़ों के संदर्भों को साफ़ करने के लिए destroyItem()
का उपयोग नहीं करता ... अच्छी तरह से मैं उन टुकड़ों का संदर्भ देता हूं जो मौजूद नहीं हैं।
EventListFragment mFragment = EventListFragment.newInstance(dateOffset);
के साथ बनाए गए टुकड़ों को संदर्भित करने का कोई अच्छा तरीका है? या मेरी गतिविधि से व्यूपेजर के अंदर एक टुकड़े को ताज़ा करने के लिए मुझे क्या करना चाहिए (विकल्प मेनू से सटीक होना)?
मैंने अभी अपना फाइनल समाप्त कर लिया है और वापस आने का फैसला किया है और देखें कि क्या आपको काम मिल रहा है ... खुशी है कि मैं मदद करने में सक्षम था (भले ही यह मुख्य समस्या के साथ नहीं था: पी)। –
प्रश्न: fragList.remove() कॉल को टुकड़े की बजाय कमजोर संदर्भ पारित नहीं किया जाना चाहिए? – gcl1
@ माइकल: मैंने इस तरह के दृष्टिकोण का उपयोग करना शुरू किया, और यह बहुत अच्छी तरह से काम करता है। लेकिन चूंकि खंडसूची में कमजोर संदर्भ हैं, ऐसा लगता है कि प्रविष्टियां कचरा संग्रह के अधीन हैं, भले ही आपको अभी भी उनकी आवश्यकता हो। मैंने getFragmentByPosition() विधि को कभी-कभी शून्य वापस कर दिया है, इसलिए मुझे लगता है कि यह हो रहा है। कोई विचार है कि उसके आसपास कैसे जाना है? धन्यवाद। – gcl1