如何摆脱警告:使用'$'而不是'。'对于Eclipse中的内部类

时间:2012-11-29 09:42:15

标签: java android eclipse

我是Android开发的新手。在我将我的eclipse和Android SDK更新到最新版本之后,我收到了一个警告:

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中摆脱此警告的最佳方法是什么?它仍然可以构建和运行,但我发现它很烦人。

我尝试使用重构来重命名包并修改了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>

2 个答案:

答案 0 :(得分:46)

如果你对一个实际上不是内部类的类发出此警告,那是因为你在包名中使用了大写字符,这不是传统的。

我还尝试将包名的第一个字母改为小写,警告消失了。

答案 1 :(得分:1)

您必须在包名称中使用小写

或在应用程序标记中添加此atrr

tools:ignore="InnerclassSeparator"

忽略此警告