2017-02-13 15 views
1

Я начал новую деятельность сам, вызвав начальную активность. Но после начала работы в методе onNewIntentfinish() не будет вызван !!.onNewIntent не называться

WebActivity.java

@Override 
protected void onNewIntent(Intent intent) { 
    super.onNewIntent(intent); 
    setIntent(intent); 
    if (intent.getStringExtra("url") != null) { 
     Intent intent1 = new Intent(getBaseContext(), WebActivity.class); 
     intent1.putExtra("url",intent.getStringExtra("url")); 
     startActivity(intent1); 
     finish(); 
    } 
} 
+1

просто удалите setIntent (намерение); потому что он сохраняет текущую активность, так что вы возвращаетесь к той же активности. проверьте [эту ссылку] (http://stackoverflow.com/questions/7748392/is-there-any-reason-not-to-call-setintent-when-overriding-onnewintent) для получения дополнительной информации. –

ответ

1

Это из-за onNewIntent не называется !!!

Я положил это на то, где эта деятельность называется.

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); 

то его работы как шарм !!.

Это вызвано новым видом деятельности. И FLAG_ACTIVITY_SINGLE_TOP выдает onNewIntent. Это FLAG_ACTIVITY_SINGLE_TOPне запускается новая активность.

+0

рад слышать. вы пытались с помощью команды «FLAG_ACTIVITY_NO_HISTORY»? –

1

FYI

Debug на первом и Удалить ниже нежелательных линии

super.onNewIntent(intent); 
setIntent(intent); 

Вызов finish() в Намерение

Intent intent1 = new Intent(getBaseContext(), WebActivity.class); 
intent1.putExtra("url",intent.getStringExtra("url")); 
finish(); 
startActivity(intent1) 

Вы также можете попробовать с FLAG_ACTIVITY_NO_HISTORY.

Если установлено, новое действие не хранится в стеке истории. Как только пользователь переходит от него, действие завершено. Это может быть также с атрибутом noHistory.

+1

@CoDfather Обратитесь к официальным документам, чтобы понять жизненный цикл деятельности: https: //developer.android.com/reference/android/app/Activity.html – Akshay

+1

, если сначала вызывается 'finish()', как это делается в ' startActivity (intent1) '?? –

+0

вот почему я предлагаю 'FLAG_ACTIVITY_NO_HISTORY' –

0

Я использовал onNewIntent для поиска в Android. Я столкнулся с проблемой, что onNewIntent не вызывался, когда я использовал кнопку Go на клавиатуре в эмуляторе. Я решил проблему, поставив свой код для обработки намерения в методе onCreate. Это необходимо сделать, чтобы убедиться, что действие намерения выполняется, когда запущен новый экземпляр активности.

Это вызвало проблему, так как onCreate вызывается всякий раз, когда активность восстанавливается из предыдущего состояния. Таким образом, метод обработки намерений вызывается даже при изменении ориентации.

Решение: Используйте if (savedInstanceState==null), чтобы определить, восстановлена ​​ли активность из предыдущего состояния, или это новый поиск.