2013-07-14 3 views
0



My Android App просто падает («... неожиданно остановился»), и я отлажена так, что я знаю, где он выходит из строя:Android App Непредвиденная при попытке вызвать конструктор

Log.d("myapp", "note 1"); 
try 
{ 
    Bla1 bla = new Bla1(); 
} 
catch(Exception e) 
{ 
    Log.d("myapp", e.getMessage()); 
} 
Log.d("myapp", "note 2"); 

«примечание 1» - это последнее, что было напечатано в журнале до того, как приложение выйдет из строя. У меня также есть оператор Log.d в конструкторе Bla1, который, очевидно, никогда не выполняется. Этот фрагмент кода имеет место в методе класса MainActivity (который расширяет Activity). Bla1 является внутренним классом MainActivity и расширяет абстрактный класс Bla, который также является внутренним классом MainActivity.
В LogCat эти две линии появляются:

E/dalvikvm(20567): Could not find class 'com.tb.myapp.MainActivity$Bla1', referenced from method com.tb.myapp.MainActivity.parseFile
E/dalvikvm(20567): Could not find class 'com.tb.myapp.MainActivity$Bla', referenced from method com.tb.myapp.MainActivity$MyTextWatcher.afterTextChanged

Таким образом, эти случаи не могут быть созданы, которые затем приводит к:

E/AndroidRuntime(20567): FATAL EXCEPTION: main
E/AndroidRuntime(20567): java.lang.NoClassDefFoundError: com.tb.myapp.MainActivity$Bla1

Код 2 внутренних классов (BLA и Bla1) здесь : http://pastebin.com/9hAGdubb

У кого-нибудь есть идея, как это исправить? Я совершенно не знаю.
Спасибо заранее.

+0

Пожалуйста, включите ваш логарифм, пожалуйста, убедитесь, что он содержит трассировку стека от сбоя. – Flynn81

+1

Посмотрите в logcat, чтобы найти точную строку исключения, созданного в конструкторе Bla1. –

+0

Добавлена ​​некоторая информация о logcat. Спасибо за ваш интерес. – Tennisball

ответ

0

Я мог бы решить свою проблему, скопировав вложенные классы в собственные файлы и сделав их «нормальными» (не вложенными) классами.
Хотя это работает, это, вероятно, не лучшее или даже хорошее решение, так как есть причины, чтобы классы вставляли классы. (См. «Зачем использовать вложенные классы?» http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html)

Если кто-то выяснит другое решение, я был бы признателен, если вы сообщите нам об этом.

Смежные вопросы