天天看點

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()中試試。

版權聲明:本文為CSDN部落客「weixin_33682790」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。

原文連結:https://blog.csdn.net/weixin_33682790/article/details/92085186