找不到android的错误

时间:2012-03-26 03:29:11

标签: android logging

我有以下代码:

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)

1 个答案:

答案 0 :(得分:3)

如果在类ListAction中有任何带初始值设定项的实例变量,则初始值设定项将在构造函数的第一行之前执行。例如,您的课程可能如下所示:

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

    private Thing mThing = new Thing();
}

如果其中一个初始值设定项(如new Thing())引发异常,则会产生您描述的行为。如果您发布了崩溃的logcat输出,那将会有所帮助。