не могу найти ошибку Android - PullRequest
1 голос
/ 26 марта 2012

У меня есть следующий код:

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 Ответ

3 голосов
/ 26 марта 2012

Если у вас есть какие-либо переменные экземпляра с инициализаторами в классе ListAction, инициализаторы будут выполняться перед первой строкой конструктора. Например, ваш класс может выглядеть так:

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

    private Thing mThing = new Thing();
}

Если один из инициализаторов (например, new Thing()) вызовет исключение, это приведет к описанному вами поведению. Это помогло бы, если бы вы опубликовали вывод logcat об ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...