Unable to instantiate activity ComponentInfo异常解决

今天遇到这样的bug:

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{cn.xs8.app/cn.xs8.app.activity.xs8_HelpActivity}: java.lang.ClassNotFoundException: cn.xs8.app.activity.xs8_HelpActivity
	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1983)
	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
	at android.app.ActivityThread.access$600(ActivityThread.java:130)
	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
	at android.os.Handler.dispatchMessage(Handler.java:99)
	at android.os.Looper.loop(Looper.java:137)
	at android.app.ActivityThread.main(ActivityThread.java:4745)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
	at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: cn.xs8.app.activity.xs8_HelpActivity
	at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
	at android.app.Instrumentation.newActivity(Instrumentation.java:1053)
	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1974)
	... 11 more

查找之后才知道原来在Manifest.xml 清单中注册该activity,但是该activity已经删除了。

下面总结一下不能实例化activity有如下三种情况:

1.没有在Manifest.xml 清单中注册该activity,或者在创建完activity后,修改了包名或者activity的类名,而配置清单中没有修改,造成不能实例化。

2.自己新建了一个包,而注册时候依然用的默认包,例如,默认包是com.ghg.Dao包,你新建了一个com.ghg.DaoImpl包,并在此包中写了个FirstActivity,在manifest.xml中注册时你写的是<activity  android:name=".FirstActivity"/>,此时相当于你在的类注册到了默认包中,系统在默认包中是找不到的,因为你的FirstActivity在com.ghg.DaoImpl包下,所以你注册时应写成包名加类名,如:<activity android:name="com.ghg.DaoImpl.FirstActivity";这样系统才能在指定的包中找到对应的类。

3.还用一种就是你的FirstActivity定义成了抽象类,这种情况好像一般人不会犯。

如果上述三种情况都考虑到了,还会抛出此异常,那么就查看一下activity类里是否同时存在这个类的构造函数和oncreate(),如果是,那么删除构造函数试试,并把初始化放到

oncreate()中试试。


你可能感兴趣的:(TO,android,异常,Activity,instantiate,Unable)