मैं संगतता लाइब्रेरी का उपयोग कर एक मौजूदा ऐप को फ्रैगमेंट एपीआई में परिवर्तित कर रहा हूं। मैंने पढ़ा है कि आप कक्षाओं को अद्यतन करना चाहते हैं जो अब गतिविधि को विस्तारित करने के लिए गतिविधि का विस्तार करते हैं। यह ज्यादातर मामलों के लिए ठीक है, लेकिन कक्षाओं के बारे में क्या है जो ListActivity या MapActivity का विस्तार करते हैं? इसे संभालने का पसंदीदा तरीका क्या है? मैं उम्मीद कर रहा था कि एक सूचीफलक गतिविधि या उन पंक्तियों के साथ कुछ था, लेकिन मुझे एक नहीं दिखाई देता है।संगतता लाइब्रेरी का उपयोग करके टुकड़ों में कनवर्ट करते समय ListActivity/MapActivity के बारे में क्या करना है?
उत्तर
एक ListFragment है: http://developer.android.com/reference/android/app/ListFragment.html
MapActivity के लिए, दुर्भाग्य से आपको लगता है कि उपयोग करने के लिए जारी रखने के लिए की आवश्यकता होगी; इसके लिए कोई फ्रेगमेंट एपीआई नहीं है।
कम से कम ListActivity के लिए आप इसे FragmentActivity (फिर भी OnItemCLickListener को लागू करने) को बदल सकते हैं और बदल देते हैं:
lv = getListView() एल.वी. = (ListView) findViewById (R.id.your_list_view_id)
और
setListAdapter lv.setAdapter को (favAdapter) (अनुकूलक)
यदि आपकी ListView की आईडी '@ है एंड्रॉइड: आईडी/सूची', आप यह कर सकते हैं: 'ListView lv = (ListView) findViewById (android.R.id.list); '। आप 'lv.setOnItemClickListener (नई ListView.OnItemClickListener() {...' – bmaupin
के साथ 'onListItemClick() 'को प्रतिस्थापित करना भी चाहेंगे, मैंने इसे @bmaupin के उत्तर पर भी टिप्पणी की, लेकिन क्या हम केवल" getListView "() "वह रिटर्न" (ListView) findViewById (R.id.your_list_view_id) "और" setListAdapter (एडाप्टर) "जो" getListView()। setAdapter (एडाप्टर) "उन चीज़ों का ख्याल रखने के लिए करता है या यह काम नहीं करेगा? – ankushg
@Ankush जो भी काम करेगा। जब भी आप getListView() को कॉल करते हैं, तो आप दृश्य पदानुक्रम खोज रहे होंगे, हालांकि यह मामूली कम कुशल है। –
यह वह जगह है कि मुझे क्या करना है जब टुकड़े एपीआई के लिए एक ListActivity परिवर्तित:
lv = (ListView) findViewById(android.R.id.list);
साथ
lv = getListView();
बदलेंlv.setAdapter(adapter);
साथ
setListAdapter(adapter);
बदलें आपonListItemClick()
ओवरराइड किया है,lv.setOnItemClickListener(new ListView.OnItemClickListener() {...
साथ बदलें आप खाली दृश्य सेट करना होगा (कि शो जब कोई परिणाम नहीं होते हैं) मैन्युअल रूप से:
lv.setEmptyView(findViewById(android.R.id.empty));
मैं CursorLoader उपयोग कर रहा हूँ, मैं आम तौर पर इस onLoadFinished() में डाल दिया:
// if there are no results if (data.getCount() == 0) { // let the user know lv.setEmptyView(findViewById(android.R.id.empty)); } else { // otherwise clear it, so it won't flash in between cursor loads lv.setEmptyView(null); }
cursor loaders का भाषण, मैं भी गतिविधि CursorLoader उपयोग करने के लिए बदल देंगे, यदि वह पहले उस बिंदु
द्वारा नहीं है
क्या केवल एक नई विधि getListView() को FragmentActivity में जोड़ने के लिए पर्याप्त है जो ListView को वापस कर देता है और फिर उस गतिविधि पर setAdapter (एडाप्टर) नामक एक और विधि सेट करें ADADapter (एडाप्टर)? – ankushg
आपका समाधान पूरी तरह से काम करता है, thx 4 इसे साझा करता है! – vinidog
@Ankush जो भी काम करेगा। आप खोज करेंगे जब भी आप getListView() को कॉल करते हैं तो व्यू पदानुक्रम देखें, हालांकि, जो मामूली कम कुशल है। –
ListActivity
को FragmentActivity
में परिवर्तित करना संभव है।
- ,
android:id="@+id/your_activity_list_view"
- अपनी गतिविधि का
onCreate
में के साथ एक खालीListView
साथFragmentActivity
के बजायListActivity
- बनाएं
res/layout/your_activity.xml
बढ़ाएँsetContentView(R.layout.your_activity);
- इसके अलावा अपने गतिविधि के
onCreate
बदलने स्पष्ट रूप से सिर्फListView
आप पुनः प्राप्त करने के फुलाया
।
ListView lv = (ListView) findViewById(R.id.your_activity_list_view);
lv.setAdapter(adapter);
lv.setOnItemClickListener(this);
धन्यवाद, लेकिन ListFragment एक FragmentActivity नहीं है, इसलिए मैं अपने विरासत संरचना है कि एक FragmentActivity उम्मीद के साथ मुद्दों कर रहा हूँ। जितना अधिक मैं इस पर काम करता हूं, उतना ही ऐसा लगता है कि इसे कुल प्रकार की पुनर्लेख की आवश्यकता होगी, न केवल क्लास प्रकारों को अपडेट करना और Google द्वारा किए गए मामूली समायोजन। – CACuzcatlan
@CACuzcatlan: आपको एक लिंक उद्धृत करने के लिए आपका स्वागत है जहां "Google" "दावा किया गया" कि आपको केवल "वर्ग प्रकारों और मामूली समायोजनों को अपडेट करना" होगा। ऐसा कहा जा रहा है कि 'ListActivity' को' ListFragment' में परिवर्तित करना बहुत सरल है, अधिकांश गतिविधि-> खंड माइग्रेशन, IMHO से सरल है। – CommonsWare
क्षमा करें, मैं अतिरंजित हूं। मुझे कहना चाहिए कि मुझे मिली इंप्रेशन थी। – CACuzcatlan