2012-12-19 8 views
7

एंड्रॉइड में, Activity व्युत्पन्न कक्षा में बहुत सारी कार्यक्षमता है। जब कोई गतिविधि बड़ी हो जाती है (कई ईवेंट हैंडलर और ऐसे) के साथ, जावा फ़ाइल बड़ी और बहुत अव्यवस्थित हो सकती है।एकाधिक फ़ाइलों में एंड्रॉइड गतिविधि को कैसे तोड़ें

क्या जावा क्लास कोड फ़ाइल "ब्रेक अप" करने का कोई तरीका है, जैसे सी # partial कीवर्ड है?

+3

हम विभिन्न कक्षाओं में गतिविधि को तोड़ सकते हैं हम एडाप्टर, असिनकटास्क के बाहरी वर्ग और इतने पर ... – rajpara

+0

तो मान लें कि मेरे पास कार्यक्षमता के साथ कुछ बटन हैं, मैं उनको घटा सकता हूं और उप-वर्ग 'बटन डाल सकता हूं मेरी 'गतिविधि' में है? उदाहरण का प्रयोग करना मेरी गतिविधि 'गतिविधि' प्राप्त करने के लिए 'Activity.this' ऑब्जेक्ट? –

+0

आपके पास बटन बटन हो सकता है, और आप उस कस्टम बटन को एक्सएमएल लेआउट फ़ाइल के साथ-साथ कोड के माध्यम से भी जोड़ सकते हैं, बटन क्लिक लिस्टनर के लिए दूसरी चीज, आप एक व्यू बना सकते हैं। ऑनक्लिक लिस्टनर कस्टम क्लास – rajpara

उत्तर

1

जैसा कि अन्य ने बताया है, आप वास्तविक फ़ाइल को विभाजित नहीं कर सकते (मैं इसे एक अच्छी चीज़ के रूप में देखता हूं)।

आप कस्टम दृश्यों और टुकड़ों में दृश्य संबंधी कार्यक्षमता निकाल सकते हैं। बाकी सब कुछ (व्यवसाय तर्क, वेब सेवा पहुंच, डीबी एक्सेस इत्यादि) आपकी गतिविधि में उपयोग की जाने वाली 'सहायक' कक्षाओं में हो सकती है। भले ही गतिविधियां एंड्रॉइड में ईश्वर वस्तुएं हों, आपको वास्तविक गतिविधि वर्ग के अंदर सब कुछ लिखना नहीं है। इसे केवल सामानों का समन्वय करना चाहिए और आवश्यक कॉलबैक और ईवेंट हैंडलर लागू करना चाहिए (जो तकनीकी रूप से अपने स्वयं के वर्गों में भी हो सकते हैं)।

+0

बेशक मैंने व्यवसाय तर्क और इन सभी अन्य चीजों को अपनी कक्षाओं में रखा है।यह सिर्फ इतना है कि 'गतिविधि' को थोड़ा गन्दा बनाते हुए बहुत सी दृश्य-संबंधित कार्यक्षमता है। मैं उन लोगों के उप-वर्गों को देखने की कोशिश करूंगा जो यह देखने के लिए कि यह मेरे लिए काम करता है या नहीं। –

+0

यदि आपको डिफ़ॉल्ट विजेट को गठबंधन करने की आवश्यकता है, तो टुकड़े बेहतर फिट हो सकते हैं। उपclassing विचार आमतौर पर केवल कस्टम विगेट्स के लिए उपयोगी है। –

+0

एपीआई स्तर 11 में बहुत खराब 'फ्रैगमेंट की शुरुआत की गई है, और कई हैंडसेट अभी भी एंड्रॉइड 2 पर हैं। –

2

संक्षिप्त उत्तर? नहीं।

से wikipedia

सन माइक्रोसिस्टम्स जावा संकलक उद्धृत की आवश्यकता है कि एक स्रोत फ़ाइल नाम, इसके अंदर ही सार्वजनिक वर्ग से मेल खाना चाहिए सी # एक ही फाइल में कई सार्वजनिक कक्षाओं की अनुमति देता है, जबकि, और फ़ाइल नाम पर कोई प्रतिबंध नहीं डालता है । सी # 2.0 और बाद में स्रोत कोड में आंशिक कीवर्ड का उपयोग कर कई फाइलों में कक्षा परिभाषा को विभाजित करने की अनुमति देता है। जावा में, एक सार्वजनिक वर्ग हमेशा अपनी स्रोत फ़ाइल में होगी। सी # में, स्रोत कोड फ़ाइलों और तार्किक इकाइयों के अलगाव कड़े से संबंधित नहीं हैं।

इसलिए जब आप अपने डिज़ाइन को फिर से तैयार कर सकते हैं और कोड को अनदेखा करने के लिए उपयोगिता कक्षाओं में कुछ कोड रेलेगेट कर सकते हैं, तो आप जावा में दो फाइलों में एक ही कक्षा के कोड को अलग नहीं कर सकते हैं।

+0

+1 त्वरित उत्तर – MAC

+0

मुझे पता था :) :)। मैं मुख्य रूप से सोच रहा था कि क्या मैं इस समस्या के साथ अकेला था। मुझे लगता है मुझे एक अलग डिजाइन प्रतिमान का उपयोग करना है। –

+0

हालांकि यह परेशान हो सकता है। मेरा इरादा विश्वास है। अनिवार्य रूप से आप एक "भगवान वर्ग" डिजाइन पर पुनर्विचार कर रहे हैं। जावा अच्छे अभ्यास की ओर धक्का देना पसंद करता है जबकि एंड्रॉइड (स्टार्टलट) के खिलाफ धक्का लग रहा है .. yup.annoying। – Oren

0

नहीं जावा स्रोत कोड एकाधिक फ़ाइलों में विभाजित नहीं किए जा सकते हैं।

http://en.wikipedia.org/wiki/Comparison_of_Java_and_C_Sharp

सन माइक्रोसिस्टम्स जावा संकलक से की आवश्यकता है कि एक स्रोत फ़ाइल नाम, इसके अंदर ही सार्वजनिक वर्ग से मेल खाना चाहिए सी # एक ही फाइल में कई सार्वजनिक कक्षाओं की अनुमति देता है, और फ़ाइल नाम पर कोई प्रतिबंध नहीं डालता है, जबकि । सी # 2.0 और बाद में स्रोत कोड में आंशिक कीवर्ड का उपयोग करके, कक्षा परिभाषा को कई फ़ाइलों में विभाजित करने की अनुमति देता है। जावा में, एक सार्वजनिक वर्ग हमेशा अपनी स्रोत फ़ाइल में होगी। सी # में, स्रोत कोड फ़ाइलों और तार्किक इकाइयों के अलगाव कड़े से संबंधित नहीं हैं।

+0

यह ** बिल्कुल ** वही उत्तर है जो @Oren ने दिया था। –

+0

इस लिंक को भी जांचें, यह आपकी मदद करनी चाहिए http://stackoverflow.com/questions/1584831/separation-of-logic-and-ui –

संबंधित मुद्दे