Intereting Posts
Как установить общее проверяемое поведение во всех группах в NavigationView? Как добавить дополнительный элемент в список без обновления предыдущего элемента Как добавить файл в проект Android, установить его на устройство и открыть его? Как я могу преобразовать Bitmap в Uri? Перетаскивание нескольких изображений не работает Можно ли использовать proguard в режиме отладки? ПРОСМОТР ПРОФЕССИОНАЛЬНОЙ ПРОГРАММЫ? Расчет скорости Интернета в Android Рисование текста внутри дуги с использованием холста Почему Android-мусор собирает много раз с помощью Jacksons ObjectMapper? Как сделать прослушиватель прокрутки для WebView в Android Связано с представлением для перемещения внутри RelativeLayout Можем ли мы отправить данные с устройства Android на другое устройство Android напрямую (p2p) без сервера посередине? Volley NetworkImageView очищает кэшированное изображение Создает ли родительский клик для всех дочерних элементов кликабель?

Действие onNewIntent Null Pointer Exception

Я инициализирую свои списки в своей деятельности onCreate (), как показано ниже:

private List<MyItem> filtered; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_dashboard); filtered = new ArrayList<>(); // more things } 

И когда я пытаюсь использовать отфильтрованные элементы из onNewIntent, иногда я получаю исключение нулевого указателя.

  @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); filtered.clear(); } 

Как это возможно?

Изменить: стартовый режим My Activity – SingleTask

Изменить 2:

Я не могу отправить больше полезных журналов, потому что это сбои в производстве. Только я получаю некоторые журналы ткани.

Спасибо за вашу помощь, но я не могу вставить целую причину неприкосновенности частной жизни.

Я думаю, что у меня проблема с использованием SingleTask-OnCreate-OnNewIntent. Просто я пытаюсь открыть приложение из уведомления с параметром, который решает, какой фрагмент будет открыт, когда пользователь перейдет к активности.

У вас есть примеры об этом, которые содержат реализации SingleTask-OnCreate-OnNewIntent?

Спасибо всем за помощь.

Solutions Collecting From Web of "Действие onNewIntent Null Pointer Exception"

Команда Open Whisper Systems столкнулась с той же проблемой:

https://github.com/WhisperSystems/Signal-Android/issues/2971

Они считают, что это вызвано платформой Android, вызывающей onNewIntent() очень скоро после onCreate() , даже если вы вызываете finish() изнутри вашего onCreate() . Это в конечном итоге приводит к тому, что в onNewIntent() и NullPointerException используются null объекты, потому что объекты не были настроены в обычном onCreate() . Кажется, это редкий сценарий или состояние гонки между onCreate() и onNewIntent() .

Кажется, они исправили это, проверив isFinishing() в onNewIntent() чтобы предотвратить onNewIntent() :

 @Override protected void onNewIntent(Intent intent) { Log.w(TAG, "onNewIntent()"); if (isFinishing()) { Log.w(TAG, "Activity is finishing..."); return; } ... } 

Источник 1: https://github.com/SilenceIM/Silence/commit/c0acae1124c0c066fd961d21d3ec9b989574125d

Источник 2: https://github.com/SilenceIM/Silence/blob/master/src/org/smssecure/smssecure/ConversationActivity.java#L223

Помните о жизненном цикле, возможно, вы возвращаетесь к своей деятельности с некоторого момента, когда onCreate () не вызывается (например, если вы установили launchMode = singleTask или что-то в вашем манифесте). Возможно, инициализируйте / повторно заселите свой ArrayList в onResume (), а также проверьте, не является ли он нулевым, а возобновление () вызывается точно, когда вы возвращаетесь к своей деятельности.

Если вы получаете NullPointerException в onNewIntent() то, вероятно, filtered объект имеет значение null.

Попробуйте этот путь

 @Override protected void onNewIntent(Intent intent) { //Check for null value and then proceed. if(filtered != null) filtered.clear(); }