Почему nullpointerexception при разборе xml в приложении для Android? - PullRequest
1 голос
/ 07 августа 2010

у нас есть приложение для Android, которое прекрасно работает до Android 2.1, но когда мы пытаемся выпустить его для Android 2.2, мы получаем нулевое исключение. Это происходит, когда мы анализируем xml в следующей строке кода:

((node) getText.item(0).getNodeValue();

помощь оценена!

Ответы [ 2 ]

3 голосов
/ 07 августа 2010

NullPointerException может быть выброшено по нескольким различным сценариям.Из документации:

Выдается, когда приложение пытается использовать null в случае, когда требуется объект.К ним относятся:

  • Вызов метода экземпляра объекта null.
  • Доступ или изменение поля объекта null.
  • Получение длиныnull, как будто это массив.
  • Доступ или изменение слотов null, как если бы это был массив.
  • Бросок null, как если бы это был Throwable значение.

Приложения должны генерировать экземпляры этого класса, чтобы указать на другое незаконное использование объекта null.

Как и в любом исключении, вы должны внимательно изучить трассировку стека, чтобы выяснить, есть ли какая-либо полезная информация о том, почему он был брошен.Если на самом деле это вызвано незаконным доступом к ссылке null, как если бы это был реальный объект, тогда общий подход к устранению проблем такого рода состоит в том, чтобы разбить выражения вроде этого:

// chained method invokations, can be hard to debug
var.method1().method2(arg).method3()

Intoнесколько утверждений, подобных этому:

// broken into multiple assignments
var1 = var.method1();
var2 = var1.method2();
var3 = var2.method3();

Теперь, когда возникает NullPointerException, вы будете знать точную часть цепочки, которая его выбрасывает, а именно, какая var равна null.

Идентификация , где , быстро сужает поиск , почему .Если var само по себе null, проследите его до предыдущих назначений.Если varN равно null, найдите документацию для methodN(), чтобы узнать, при каких обстоятельствах он может вернуть null.

Если null происходит из операции типа getв структуре контейнера / изменяемых данных проблема больше не так аккуратно локализована, и вам придется выяснить, где произошла соответствующая set.Если null никогда не является допустимым значением для этого контейнера, то, возможно, он должен выполнить проверку null во время set: всегда лучше вызывать сбой раньше, чем позже, потому что источник ошибки может быть локализован большелегко.

Смежные вопросы

Об отладке NullPointerException:

О поведении приложения для броска NullPointerException:

В других NullPointerException сценариях, поучительных для обучения:

На null сам по себе:

1 голос
/ 07 августа 2010

Это неправильный код.Пожалуйста исправьте.Затем убедитесь, что вы не вызываете какой-либо метод со значением null.

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