2012-11-29 10 views
12

Jestem nowy w rozwoju Androida. Po zaktualizowałem moją Eclipse i Android SDK do najnowszej wersji, mam ostrzeżenie:

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

znalazłem pewne informacje na ten 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.)" 

wierzę, że kiedyś wielkie litery w nazwie pakietu sub jak com.abc.app.Promotion.

Pytanie brzmi: Jaki jest najlepszy sposób na pozbycie się tego ostrzeżenia w pliku manifest.xml? Nadal może budować i uruchamiać, ale uważam to za denerwujące.

Próbowałem za pomocą Refactor zmienić nazwę pakietu i zmodyfikował manifest.xml android:name="com.abc.app.promotion.Promotion" ale mam ten błąd:

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? 

Dzięki za pomoc!

EDIT: oryginalny manifest.xml

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

aktualizowane manifest.xml

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

znaki użycie małe tylko dla nazw pakietów. – Alex

+0

tak, rozumiem. Zrobiłem ten błąd w poprzedniej wersji SDK bez ostrzeżenia i chcę go teraz zmienić. Dzięki! – siutsin

+0

również umieść swój manifest – njzk2

Odpowiedz

32

Jeśli pojawi się to ostrzeżenie dla klasy, która w rzeczywistości nie jest wewnętrzną klasy, to dlatego, że używasz wielkie litery w nazwie paczki, co nie jest konwencjonalne.

Próbowałem również zmienić tylko pierwszą literę nazwy pakietu na małą literę, ostrzeżenie zniknęło.

0

Najbardziej prawdopodobny problem pojawił się, ponieważ przy użyciu wielkich liter w nazwie paczki, więc zmienić wielkie litery na małe litery. jeśli ostrzeżenie nadal pozostają

następnie zaimportować przestrzeń nazw narzędzi:

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

Następnie zignorować ostrzeżenie na konkretnym elemencie:

tools:ignore="InnerclassSeparator" 
Powiązane problemy