2012-03-26 100 views
1

我有以下代码:找不到错误的Android

Log.e("MainScreen", "1"); 
ListAction listAction = new ListAction(this); 
Log.e("MainScreen", "2"); 

的代码只运行至满足Log.e( “MainScreen”, “1”)。然后它崩溃。然而,我不知道这是怎么可能的,因为程序永远不会到达ListAction构造函数的第一行(Log.e(“ListAction”,“1”);)另外,当我删除ListAction listAction行时,罚款。

并且所提到的构造函数:

public ListAction(Context context) { 
    Log.e("ListAction", "1"); 
    this.db = new DataBaseCreation(context); 
    Log.e("ListAction", "2"); 
    db.open(); 
    Log.e("ListAction", "3"); 
    this.bdd = db.getBDD(); 
    Log.e("ListAction", "4"); 

运行代码时没有日志发布一次。

什么给?问题是什么?

输出:

03-26 03:54:54.680: E/MainScreen(534): 1 

03-26 03:54:54.680: D/AndroidRuntime(534): Shutting down VM 
03-26 03:54:54.690: W/dalvikvm(534): threadid=1: thread exiting with uncaught exception (group=0x409c01f8) 
03-26 03:54:54.721: E/AndroidRuntime(534): FATAL EXCEPTION: main 
03-26 03:54:54.721: E/AndroidRuntime(534): java.lang.RuntimeException: Unable to start activity ComponentInfo{android.GroceryListManager/android.GroceryListManager.MainScreen}: java.lang.NullPointerException 
03-26 03:54:54.721: E/AndroidRuntime(534): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956) 
+0

MainScreen 1(从崩溃日志 – user963070 2012-03-26 03:57:19

+0

堆栈跟踪 – edthethird 2012-03-26 03:57:26

回答

3

如果您有ListAction类初始化任何实例变量,则初始化将在构造函数的第一行之前执行。例如,你的类可能是这样的:

public class ListAction { 
    public ListAction(Context context) { 
     . . . 
    } 

    private Thing mThing = new Thing(); 
} 

如果初始化(如new Thing())之一提出了一个例外,那就会产生你所描述的行为。如果您发布崩溃的logcat输出,这将有所帮助。

+0

- ?张贴崩溃 – user963070 2012-03-26 04:00:17

+0

的logcat的输出@ user963070 - 你几乎可以肯定引用有null'的'在初始化一些其他的默认值实例变量实例变量检查每个字段的初始化表达式是否是整个logcat输出?我很惊讶没有确定源代码行 – 2012-03-26 04:09:22

+0

你说得对,谢谢。 – user963070 2012-03-26 04:24:58