2012-02-23 21 views
11

मेरा एप्लिकेशन लाइब्रेरी प्रोजेक्ट पर निर्भर करता है।लाइब्रेरी प्रोजेक्ट से अनुप्रयोग संसाधनों तक पहुंच

menu.xml फ़ाइल एप्लिकेशन प्रोजेक्ट के भीतर है।
सभी जावा कोड लाइब्रेरी प्रोजेक्ट के भीतर है, जिसमें मेनू हैंडलर कोड ऑनऑप्शन इटैम चयन() शामिल है।

क्या लाइब्रेरी प्रोजेक्ट से एप्लिकेशन संसाधनों तक पहुंचने का कोई तरीका है? मैं, कुछ इस तरह है, जो वर्तमान असंभव है लिखना पसंद के बाद से मेनू आइटम पुस्तकालय से दिखाई नहीं देते हैं चाहते हैं:

if (item.getItemId()==R.id.settings) { 
... 
} 
+4

यदि आपकी लाइब्रेरी को आपके एप्लिकेशन प्रोजेक्ट में क्या है, तो आप शायद अपने डिज़ाइन को फिर से सोचना चाहें। यदि मेनू ऐसा कुछ है जिसे आप अन्य परियोजनाओं के साथ साझा करना चाहते हैं, तो मेनू को लाइब्रेरी प्रोजेक्ट में ले जाएं। –

+0

मैं यह उल्लेख करना भूल गया कि लाइब्रेरी प्रोजेक्ट में सभी मेनू शामिल हैं, एक के अलावा। प्रोजेक्ट मेनू में अतिरिक्त "प्रो संस्करण प्राप्त करें" मेनू आइटम है। – tos

+0

शायद आप अपनी लाइब्रेरी गतिविधि से उप-वर्ग चाहते हैं और मैन्युअल रूप से "गो प्रो" में मेनू विकल्प जोड़ना चाहते हैं। –

उत्तर

17

हाँ आप आप अपने पुस्तकालय के पैकेज के नाम पता कर सकते हैं।
Resources.getIdentifier(...)

आप कर सकते हैं:

getResources().getIdentifier("res_name", "res_type", "com.library.package");

पूर्व:

R.id.settings होगा:

getResources().getIdentifier("settings", "id", "com.library.package");

+0

यह ठीक काम करता है, धन्यवाद। – tos

+0

ठीक है, मैं i.e "android: windowBackground" तक कैसे पहुंच सकता हूं? – deadfish

+0

हमेशा मुझे "0" प्राप्त करें और इसका मतलब यह नहीं मिल सकता है। –

12

आप वास्तव में सिर्फका एक संस्करण को शामिल करना चाहिए आपकी लाइब्रेरी प्रोजेक्ट मेंसंसाधन। यदि आप अपने आवेदन में menu.xml अलग करना चाहते हैं, तो आप ऐसा कर सकते हैं और यह लाइब्रेरी प्रोजेक्ट से प्रतिलिपि को ओवरराइड कर देगा।

Library Projects docs से

:

ऐसे मामलों में जहां एक संसाधन आईडी दोनों आवेदन और पुस्तकालय में परिभाषित किया गया है, उपकरण सुनिश्चित करना है कि संसाधन आवेदन में घोषित प्राथमिकता हो जाता है और है कि पुस्तकालय परियोजना में संसाधन एप्लिकेशन में संकलित नहीं है। एपीके। यह आपके एप्लिकेशन को किसी भी लाइब्रेरी में परिभाषित किसी भी संसाधन व्यवहार या मानों का उपयोग या पुनर्वितरण करने के लिए लचीलापन देता है।

+0

यह शायद समस्या का सबसे अच्छा समाधान है - पूरी तरह से आवश्यकता को हटा रहा है। मैंने कोशिश की, ठीक काम करता है। धन्यवाद। – tos

+0

ध्यान दें कि [[अच्छी तरह से काम नहीं करता है] [https://stackoverflow.com/questions/37213375/is-it-possible-to-redefine-a-librarys- डेटाबेस- संसाधन) [डेटा बाइंडिंग] के साथ (https://developer.android.com/tools/data-binding/guide.html)। – PLNech

+0

बेहतर समाधान। – SHM

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