我们在创建Activity的实例时收到了InstantiationException的堆栈跟踪。
日志有newInstance failed: no <init>()
消息
情况很明显:VM无法找到默认的无参数构造函数。这在this thread
中有解释正如我的研究表明,人们在向活动的构造者添加参数时通常会收到这个,这肯定是不好的。但这不是我们的情况 - 我们总是可以访问默认构造函数。 初始化某个成员时,该异常的另一个原因可能是另一个异常(初始化是在默认构造函数中运行的,对吗?) - 但我们再次不这样做。所有成员都在onCreate()方法中初始化。
一些细节(名称已更改): 活动被添加到AndroidManifest.xml:
<manifest
package="app.name"
....>
....
<activity
android:name="app.name.activity.OurActivity"
android:label="@string/NAME">
</activity>
现在我们创建意图的方式可能看起来很奇怪,但它适用于所有情况:
Context packageContext = layoutInflater.getContext().createPackageContext("app.name", 0);
Intent intent = new Intent(packageContext, OurActivity.class);
...startActivity(intent);
我认为这可能是一个问题,但是: 1)这个工作好几个月 2)同一个客户端在另一个活动中获得相同的异常,该活动开始使用活动作为上下文;
我无法重现异常以理解/修复它。但不知何故,我们的一位客户得到了它。他有Droid ERIS(Verizon)设备
有什么想法?有什么情况我不知道VM何时找不到默认构造函数?