Мы получили трассировку стека InstantiationException при создании экземпляра Activity.
Журнал имеет newInstance failed: no <init>()
сообщение
Ситуация совершенно ясна: виртуальная машина не может найти конструктор по умолчанию без параметров. Это объясняется в этой теме
Как показало мое исследование, люди обычно получают это, когда добавляют параметры в конструкторы своей Деятельности, что, безусловно, плохо. Но это не наш случай - у нас всегда есть доступ к конструктору по умолчанию.
Другой причиной этого исключения может быть другое исключение при инициализации некоторого члена (инициализация выполняется в конструкторе по умолчанию, верно?) - но опять же мы этого не делаем. Все члены инициализируются в методе 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)
Есть мысли? Есть ли какой-то случай, о котором я не знаю, когда ВМ не найдет конструктор по умолчанию?