12

मैं के रूप में setContentView(R.layout.activity_main);कैसे एक और मॉड्यूल

मैं पैकेज में अन्य मॉड्यूल है MainActivity में contentView की स्थापना कर रहा हूँ के रूप में अच्छी तरह से, कि मॉड्यूल मैं Gradle फ़ाइल apply plugin: 'com.android.library' में परिभाषित के लिए से लेआउट एक्सएमएल कॉल करने के लिए यह एक बार भी रेस/लेआउट/activity_main.xml

तो क्या मैं mainActivity से किसी अन्य मॉड्यूल से गतिविधि_main.xml को कॉल कर सकता हूं?

उत्तर

5

हाँ आप कर सकते हैं, लेकिन आपके मॉड्यूल में एक और एंड्रॉइड पैकेज होना चाहिए (संपादित करें: बस यह सुनिश्चित करने के लिए, आप अपने एंड्रॉइड मेनिफेस्ट के अंदर अपना पैकेज घोषित करें)। तो उदा। आपके पुस्तकालय के लिए आपके ऐप मॉड्यूल और com.example.lib के लिए आपके पास com.example.app है। फिर आप com.example.app.R या com.example.lib.R द्वारा अपने संसाधन आईडी तक पहुंच सकते हैं। तो आपके पुस्तकालय मॉड्यूल के अंदर आपके लेआउट के लिए com.example.lib.R.layout.activity_main होगा।

+0

thnx, अगर मैं फ़ाइल का नाम बदलता हूं तो यह ठीक काम करता है। मैं नेविगेशन ड्रॉवर को बुला रहा हूं, इसलिए मैं दराज खोलने को देख सकता हूं। जैसे 'com.example.lib.R.layout.activity_main_drawer' लेकिन अगर मैं सिर्फ 'com.example.lib.R.layout.activity_main' कहता हूं तो यह अभी भी ऐप से गतिविधि_माइन को कॉल करता है। कोई कारण? – user2661518

+0

क्या आपने यह सुनिश्चित किया है कि आपके पैकेज में आपके दो मैनिफ़ेस्ट के अंदर अलग हैं? अन्यथा आप एक ही नाम के साथ पुस्तकालय संसाधनों को नहीं देख सकते हैं, अगर दोनों एक ही पैकेज के अंदर हैं और इसलिए दोनों अलग-अलग 'com.example.lib.R' कक्षाओं में हैं। – einschnaehkeee

+0

हां मैंने उन दोनों को जोड़ा है। egpackage = "com.example.lib" यह केवल तभी काम नहीं कर रहा है जब यह वही नाम – user2661518

1

मुझे लगता है कि आप देख रहे हैं कहा जाता है विभिन्न मॉड्यूल में एक ही http://developer.android.com/tools/projects/index.html

का विकास संबंधी खंड संसाधन के अनुसार, आप 2 लेआउट नहीं हो सकता है: एक भले ही अपने आर फ़ाइलों को सही ढंग हैं एक और स्थान पर आ जाएगी namespaced। यह बहुत निराशाजनक व्यवहार है लेकिन ऐसा लगता है कि इसके आसपास एकमात्र तरीका उपसर्ग है।

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