<uses-sdk android:minSdkVersion="7" />
<application
android:description="@string/app_description"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:theme="@android:style/Theme.Light" >
<activity
android:name="com.xyz.Main.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
Lint工具告诉我,我的活动没有在清单中注册,如果我尝试运行它,LogCat请告诉我:
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.name/com.xyz.Main.MainActivity}: java.lang.ClassNotFoundException: com.xyz.Main.MainActivity
这让我很疯狂,我重新安装了Eclipse,并将SDK和内容更新到API级别17,现在我似乎无法执行我自己的应用程序。我完全不知道这里到底出了什么问题,显然这个活动已在manifest.xml中完美注册。
提前致谢。
答案 0 :(得分:4)
您的包名称包含大写字母(“Main”),这可能是个问题。在code.google.com上查看此问题:
答案 1 :(得分:3)
我有解决方案。今天我觉得有足够的动力让我再次参与这个项目,并尝试将项目移植到Linux发行版(这让我得出结论,Linux对于Android开发人员来说是一个痛苦的问题)以及将它整合到“行”按行“到一个新的Android项目。
我曾经实施String-&amp;具有某些常量和值的整数接口(例如,“可见”为0x00)。不幸的是,Android似乎在接口和活动类方面遇到了麻烦。删除接口并对常量进行静态引用使模拟器摆脱了问题。
public class MyActivity extends Activity implements Options // [...]
Btn.setVisibility(VISIBLE); // bad idea
public class MyActivity extends Activity // [...]
Btn.setVisibility(Options.VISIBLE); // good idea
希望这至少可以帮助搜索此问题的人。
答案 2 :(得分:2)
如果发生这种情况,请更正“包”名称(正如其他人所说),然后务必重新运行“Android Lint”。
警告将保持不变,直到纠正错误后再次运行Lint。
答案 3 :(得分:1)
我遇到了同样的问题:Lint无法识别AndroidManifest.xml中明显正确的描述。
然后我将包名改为只有一个小字母和小点的包名。
Eclipse中的重构方案并没有在任何地方自动重命名包名,所以我不得不手动修复一些情况,比如重新输入清单文件中的包名。
当应用程序的所有部分最后都引用新包名时,Lint也终于满意了。
因此,只有在您喜欢麻烦的情况下才能在包名中使用大写字母和数字。
我想在Lint中称这是一个错误,或者至少是一个烦恼,因为应该允许包名遵循Java规则。
答案 4 :(得分:1)
由于我的愚蠢错误,我收到了同样的错误消息。花了一段时间才找到它,所以万一其他人犯了同样的错误而且在这个帖子上绊了一下,这就是我做错了:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.DogsDropDown">
<uses-sdk android:minSdkVersion="7"
android:targetSdkVersion="14"/>
<application
android:icon="@drawable/icon"
android:label="@string/app_name">
</application>
<activity
android:name="com.example.DogsDropDown.MainActivity"
android:label="@string/app_name"
android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</manifest>
一旦你看到它就很明显了 - 我放了&lt; activity&gt; &lt; application&gt;之外的规范规范而不是内部。
答案 5 :(得分:0)
要启动未在 Android Manifest 中注册的 Activity,您还可以使用以下代码段: