2012-11-29 15 views
12

में आंतरिक कक्षाओं के लिए मैं एंड्रॉइड विकास के लिए नया हूं।

Use '$' instead of '.' for inner classes (or use only lowercase letters in package names) AndroidManifest.xml 

मैं इस link बारे में कुछ जानकारी मिल गया: बाद मैं नवीनतम संस्करण के लिए अपने ग्रहण और एंड्रॉयड एसडीके अद्यतन, मैं एक चेतावनी मिल गया।

"When you reference an inner class in a manifest file, you must use '$' instead of '.' " + 
    "as the separator character, e.g. Outer$Inner instead of Outer.Inner.\n" + 
    "\n" + 
    "(If you get this warning for a class which is not actually an inner class, it's " + 
    "because you are using uppercase characters in your package name, which is not " + 
    "conventional.)" 

मुझे विश्वास है कि मैं com.abc.app.Promotion की तरह उप पैकेज नाम पर अपरकेस वर्णों का इस्तेमाल किया।

सवाल यह है: सबसे अच्छा तरीका है Manifest.xml में इस चेतावनी से छुटकारा पाने के क्या है? यह अभी भी निर्माण और चला सकता है लेकिन मुझे यह बहुत परेशान लगता है।

मैं पैकेज नाम बदलने के लिए refactor उपयोग करने की कोशिश और Manifest.xml android:name="com.abc.app.promotion.Promotion" संशोधित लेकिन यह त्रुटि आई:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.abc.app/com.abc.app.TabView}: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.abc.app/com.abc.app.promotion.Promotion}; have you declared this activity in your AndroidManifest.xml? 

की मदद करने के लिए धन्यवाद!

संपादित करें: मूल Manifest.xml

<activity android:name=".Promotion.Promotion" ></activity> 

अद्यतन Manifest.xml

<activity android:name="promotion.Promotion" ></activity> 
+7

उपयोग लोअरकेस वर्णों: यदि चेतावनी अभी भी बने हुए हैं,

तो आयात उपकरण नाम स्थान:

xmlns:tools="http://schemas.android.com/tools" 

फिर विशिष्ट तत्व पर चेतावनी को अनदेखा। – Alex

+0

हाँ, मैं समझता हूं। मैंने बिना किसी चेतावनी के एसडीके के पिछले संस्करण में यह गलती की है और इसे अभी वापस बदलना चाहता हूं। धन्यवाद! – siutsin

+0

अपना मैनिफेस्ट भी पोस्ट करें – njzk2

उत्तर

32

आप एक वर्ग जो वास्तव में एक आंतरिक वर्ग नहीं है के लिए यह चेतावनी मिलती है, क्योंकि आप उपयोग कर रहे है आपके पैकेज नाम में अपरकेस वर्ण, जो परंपरागत नहीं है।

मैं भी कोशिश की लोअर केस होने के लिए पैकेज का नाम का केवल पहला अक्षर बदलने के लिए, चेतावनी गायब हो गया।

0

सबसे संभावित समस्या तब दिखाई दी क्योंकि पैकेज नाम में ऊपरी मामले का उपयोग करके, इसलिए अपरकेस को लोअर केस में बदलें। केवल पैकेज के नाम के लिए

tools:ignore="InnerclassSeparator" 
संबंधित मुद्दे