Intereting Posts
Приложение не поступает по почте программно Как создать тост из IntentService? Он застревает на экране Речь в тексте в android Как настроить макет, когда появляется мягкая клавиатура GridView Выделите выбранный элемент Android setOnCheckedChangeListener снова звонит, когда возвращается старый вид Как вы добавляете конфигурацию, специфичную для конкретной сборки, в APK? Стили шрифтов не работают при установке пользовательского шрифта для веб-просмотра Как создать listview onItemclicklistener Ошибка эмулятора Android: «Системный пользовательский интерфейс остановлен» Eclipse – Не удается завершить установку, потому что не удалось найти один или несколько обязательных элементов (org.apache.httpcomponents.httpclient) API-интерфейс на стороне сервера для мобильных приложений Имя пакета не соответствует пути к файлу Можно ли запустить Xamarin Mono в Linux? Импорт хранилища ключей от eclipse до android studio

Действие 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(); }