2013-07-14 113 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

如果有人找出另一個解決方案,我將不勝感激,如果你讓我們知道。