Unable to start activity ComponentInfo 转载

最近在作一款音乐播放器的时候,而后在调试的过程当中发现一直报这个错误"Unable to start activity ComponentInfo",从字面的意思看是没法启动某个activity组件,可是看了manifest文件,全部的activity组件都已经注册过了,为何会报这种错误?后来发现原来是注册路径出了问题,最开始的代码是这样的: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.music" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="5" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application> </manifest> 对于MainActivity这个组件,程序启动的时候寻找它的时候,根据包的路径"package="com.music"加上".MainActivity"就是 "com.music.MainActivity",可是在工程中MainActivity是在"com.music.activity"这个包下,显然路径就是错的,所以会报没法找到某个组件的错误。所以更改组件的注册路径就能够解决这个问题: 能够将<activity android:name=".MainActivity"> 改为其相对路径 <activity android:name=".activity.MainActivity"> 或者也能够直接用绝对路径 <activity android:name="com.music.activity.MainActivity"> 注意:在注册组件的时候,若是在名称前面加了点'.',则表示该组件的路径是package的路径加上组件名,好比package='com.music',<activity android:name='.MainActivity'></activity>,则其完整路径为'com.music.MainActivity'。 若是没有加点,则表示绝对路径,如<activity android:name="com.music.activity.MainActivity">。 有一种特殊状况是,若是要注册的activity在当前package的根目录下,则前面的点'.'可写可不写。可是若是是在package包的子包下,如package='com.music',而MainActivity的绝对路径为'com.music.activity.MainActivity',则 <activity android:name=".activity.MainActivity">中的".activity.MainActivity"前面的点'.'不能省略。
相关文章
相关标签/搜索