Вопрос

У меня есть некоторые отчеты об ошибках в моем приложении Android, это NullPointerException в OnCreate () в деятельности.Код, который не удается, getIntent (). GetExtras (). GetStringExtra ("name"). (Исключение нулевого указателя)

Это означает, что getExtras () как -то нуль. Я уверен, что я устанавливаю намерение дополнительного на каждом месте, где я создаю намерение. Я не могу воссоздать это на своем эмуляторе на устройстве. Я думаю, что это произошло на моем настоящем устройстве (но не в то время как я отлаживал) после того, как я попытался снова открыть приложение, а в то же время Android, вероятно, убил процесс и снова воссоздал деятельность. Но разве не должно быть дополнительных намерений, которые хранятся даже в этом сценарии?

Я попытался убить процесс на эмуляторе, он снова вызвал, и getExtras () вернул правильное значение.

Я заменил код getIntent (). GetStringExtra (). В чем разница, кроме того, это не бросит NullPointerException, но все равно будет установить строку как нулевую. Есть ли другие различия?

Что это может вызвать?

Это было полезно?

Решение 3

Я узнал, что где -то еще в моем коде я создавал ярлыки, у которых была дополнительная строка []. Android Home (и, возможно, другие части системы) не переносят строковые массивы, только примитивные дополнения (int, String, Long, Float ...). Но код, который вызывал проблемы, не использует ярлыки, это всего лишь простое действие, которое получает дополнительное массив строкового массива. Возможно, пустые дополнения были вызваны этой проблемой - приложение было убито ОС, и дополнительные дополнительные данные не могли храниться. В этом случае Android не брошено исключением.

Описано здесь Роменом Гая:http://groups.google.com/group/android-developers/browse_thread/thread/7f2ce458bd5d112f/189e2b7b2b2532d7

Я задал более конкретный вопрос об этом здесь:Дополнительные дополнения утрачены после перезапуска?

Другие советы

Intent.getStringextra () возвращает NULL, если нет дополнений. Intent.getExtras () возвращает NULL, если нет дополнительных данных, поэтому вам нужно проверить это, прежде чем пытаться вызовать getString () или другие методы на нем.

getIntent.getExtras () в какой -то момент возвращает NULL. getIntent (). getStringExtra (), скорее всего, кодируется для проверки на наличие нулевых дополнений и вернуть NULL, если getExtras () является нулевым. Так называемая архитектура «без бросков». Если это так, это действительное выполнение выполнения и не бросит исключение. Вызов GetStringExtra на нулевых дополнениях не является допустимым выполнением времени выполнения и должно сделать исключение.

Похоже, что существует путь, в котором getExtras () является нулевым, так что вы можете кодировать это, проверив нулевые дополнения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top