2013-07-14 115 views
0



我的Android应用程序崩溃只是(“...意外停止”),我调试它,让我知道它在哪里崩溃:Android应用程序意外停止,而试图调用构造

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

“note 1”是在应用程序崩溃之前打印到日志中的最后一件事情。我在Bla1的构造函数中也有一个Log.d语句,这显然从未执行过。 此代码片段发生在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

请包括您的logcat,请确保它包含崩溃的堆栈跟踪。 – Flynn81

+1

在logcat中查找Bla1的构造函数中引发的异常的确切行 –

+0

添加了一些logcat信息。感谢您的关注。 – Tennisball

回答

0

我可以通过将嵌套类复制到自己的文件并使其成为“普通”(非嵌套)类来解决我的问题。
虽然这是行得通的,但它可能不是最好的或者甚至是一个好的解决方案,因为有理由使类嵌套类。 (请参阅“为什么使用嵌套类?”http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

如果有人找出另一个解决方案,我将不胜感激,如果你让我们知道。