在Android程序的开发过程中,如果你是新手的话,往往会由于小疏忽导致一些程序运行时的异常,java.lang.RuntimeException: Unable to instantiate activity ComponentInfo
就是一类,这种异常容易让你抓破头皮也百思不得其解,本文我们来探讨一下这个异常的产生。
首先,通过Eclipse 创建一个Androind工程命名为MyLayoutSample:
点击Next , 在要求生成Activity 对话框出现时反选Create Activity, 我们需要自己生成Activity, 最后点击Finish
接下来,添加一个Activity 的类文件,命名为 LayoutSampleActivity, 配置如下:
在新建的Activity 中,我们需要重载 onCreate函数:
由于是新生成的Activiy, 我们需要在AndroidManifest.xml文件中告诉系统,程序运行时启动我们刚创建的Activity,:
完成这一步后,运行程序到模拟器上,我们会发现如下错误:
即异常 java.lang.RuntimeException: Unable to instantiate activity ComponentInfo 出现了。
这个问题出现的原因之一在于, 当android程序运行时,系统会解析AndroidManifest.xml,并从中找到要启动的Activity, 如果xml中指明的Activity没有标明它处于哪个Package下的话,系统自动到默认Package下查找,由于我们在创建Activity时,没有设置它属于哪个包:
因此在默认Package下系统找不到要加载的Activity,因此引发异常,该问题的解决方法之一是在activity的java文件中为其指定package(黑色线):
再次运行程序,异常就消失了。