我有以下代码:
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)
最佳答案
如果类 ListAction
中有任何带有初始化器的实例变量,初始化器将在构造函数的第一行之前执行。例如,您的类(class)可能如下所示:
public class ListAction {
public ListAction(Context context) {
. . .
}
private Thing mThing = new Thing();
}
如果其中一个初始化程序(如 new Thing()
)引发异常,将产生您描述的行为。如果您发布崩溃的 logcat 输出,将会有所帮助。
关于android - 找不到错误安卓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9866269/