2010-10-14 14 views
29

पर कई जावा पैकेज सहित, जिस ऐप को मैं विकसित कर रहा हूं, इसमें सात जावा पैकेजों में कई गतिविधियां आयोजित की गई हैं। मूल रूप से मैंने विभिन्न परियोजनाओं के रूप में जावा पैकेज में गतिविधियों के प्रत्येक समूह के लिए सभी कोडिंग और सामान लिखा था।एंड्रॉइड: मैनिफेस्ट

अब मैं उस बिंदु पर हूं जहां मैं सभी संकुल एक परियोजना में एक साथ रखना चाहता हूं। जब मैं src फ़ोल्डर में नया पैकेज जोड़ता हूं, तो मुझे अपने सभी R.id. * मानों के लिए एक त्रुटि मिलती है ("आर को हल नहीं किया जा सकता")।

मेरी वृत्ति मुझे बताती है कि मुझे प्रोजेक्ट मैनिफेस्ट में कुछ फैंसी रखना है, लेकिन मुझे यह बताने के लिए कोई संसाधन ऑनलाइन नहीं मिल रहा है।

(नोट:। मैं this और this पढ़ लिया है और मैं अभी भी अपने प्रोजेक्ट के लिए अतिरिक्त संकुल को जोड़ने का तरीका समझ नहीं सकता है)

+0

आप एक साफ निर्माण कर रही कोशिश की में MainActivity.class:

उदाहरण?और आपके द्वारा जोड़े गए वर्ग में अपनी आर फ़ाइल के लिए पथ शामिल करें अपडेट करें? यदि आपके पास पहले एक अलग परियोजना में गतिविधि थी, तो आर फ़ाइल शायद एक अलग स्थान पर भी थी। –

+2

मैं प्रोजेक्ट> क्लीन पर गया हूं ... आधा दर्जन बार उम्मीद है कि यह सिर्फ काम करेगा ... कोई भाग्य नहीं। – HappyGeisha

+0

आर के लिए पथ शामिल करने के बारे में क्या? क्या यह सही है? –

उत्तर

36

यकीन है कि गतिविधि के शीर्ष पर इंपोर्ट स्टेटमेंट का संदर्भ देता है सही बनाओ आर फाइल प्रत्येक प्रोजेक्ट की अपनी आर फ़ाइल होती है, इसलिए यदि आप एक प्रोजेक्ट से दूसरे प्रोजेक्ट को कॉपी करते हैं तो यह पुरानी प्रोजेक्ट से आर फाइल को संदर्भित करने का प्रयास करेगा।

आपको मैनिफेस्ट में विभिन्न पैकेजों के किसी भी स्पष्ट समावेशन की आवश्यकता नहीं है। दो अलग-अलग पैकेज से गतिविधियों में शामिल करने के लिए, कहते हैं:

com.example.package1.Activity1 
com.example.package2.Activity2 

आप निम्न कर सकते हैं:

<manifest package="com.example" . . . > 
    <application . . .> 
    <activity android:name=".package1.Activity1" . . . /> 
    <activity android:name=".package2.Activity2" . . . /> 
    </application> 
</manifest> 
+0

ओह माया आप बहुत उपयोगी रहे हैं !! एक बार फिर धन्यवाद! – HappyGeisha

+0

हाँ कोड काम करता है लेकिन एंड्रॉइड अभी भी लाल त्रुटि अंक देता है (फिर भी संकलित और चलाएगा) – StarWind0

14

एंड्रॉयड स्वचालित रूप से वर्ग पैकेज आपके ऐप्लिकेशन के प्रदर्शन में घोषित में "आर" का नाम दिया पैदा करता है। जब आपके सभी वर्ग उस पैकेज के अंदर होते हैं, तो आपको कभी भी "आर" को स्पष्ट रूप से आयात नहीं करना पड़ेगा। हालांकि, अगर आप अन्य संकुल में श्रेणियां होती हैं, वे नहीं यह डिफ़ॉल्ट रूप से देखेंगे और आप में शामिल करना होगा

import <app-package>.R; 

या

import <app-package>.*; 

(निश्चित रूप से <app-package> के लिए वास्तविक नाम प्रतिस्थापन)।

यदि आप अपने ऐप में library projects शामिल करते हैं, तो वे अपने स्वयं के "आर" वर्गों का संदर्भ दे सकते हैं, जो उनके घर संकुल के भीतर उत्पन्न किए जाएंगे। यदि आपके पास कई स्वतंत्र गतिविधियां हैं जिन्हें एक अंतिम ऐप में एक साथ बंडल करने की आवश्यकता है, तो आपको चीजों को मैन्युअल रूप से विलय करने की बजाय पुस्तकालय परियोजनाओं का उपयोग करने पर गंभीरता से विचार करना चाहिए। यह आपके लिए जीवन को अधिक आसान बना सकता है।

+0

मैंने अतीत में लाइब्रेरी प्रोजेक्ट्स का उपयोग करने का प्रयास किया है, और यह मेरे लिए काम नहीं करता है। ऐसा इसलिए है क्योंकि मेरी सभी गतिविधियां एक दूसरे को पार करती हैं और एक बार जब मैंने एक प्रोजेक्ट लाइब्रेरी बनाई है तो संदर्भ एक दिशात्मक बन गया है .. मैं एक प्रोग्रामिंग नोब हूं इसलिए शायद यह कोई समझ नहीं आया लेकिन आपकी मदद के लिए धन्यवाद :) – HappyGeisha

+0

नहीं, यह पुस्तकालयों के साथ एक आम समस्या है - वे बहुत अधिक आत्मनिर्भर होना चाहिए, जो उनकी उपयोगिता को सीमित करता है। मैंने सोचा कि यह इस मामले में उपयोगी हो सकता है क्योंकि आपने कहा था कि आपने अलगाव में प्रत्येक गतिविधि विकसित की है, और इस प्रकार मुझे लगा कि वे पहले से ही आत्मनिर्भर होंगे। यदि वे आपके जीवन को आसान नहीं बनाते हैं, तो उनका उपयोग करने में कोई प्रतिशत नहीं है। – beekeeper

0

चेक कि लेआउट -> main.xml फ़ाइल सही है और android:id="@+id/whateverIdHasCausedYouTheError"

R.java फ़ाइल तो आईडी .. और bam शामिल करने के लिए अद्यतन किया जाएगा भी शामिल है, अपने त्रुटि गायब करना चाहिए।

1

समस्या तब भी जारी रह सकती है जब हम मेनिफेस्ट फ़ाइल बदलते हैं। इससे बचने के लिए हमें अपने सभी वर्गों में import com.example.R; जोड़ना होगा। package2

pakage com.example.package2.Activity2 
import com.example.R; 

(package1 में TestActivity.class)

pakage com.example.package1.Activity1 
import com.example.R; 
संबंधित मुद्दे