Получить параметры из намерения, используемого для onResume () - PullRequest
6 голосов
/ 26 июля 2011

Я использую LocalActivityManager для выполнения действий на разных вкладках, когда я переключаюсь с вкладки на другую, я запускаю Activity, соответствующий выбранной вкладке. Моя проблема проста:

если я нажму на вкладку 1, создаю intent11 и в первый раз вызывается метод onCreate(Bundle emptyBundle) из Activity1. Если я нажимаю на вкладку 2, я создаю intent2 и вызывается метод onCreate(). Затем, когда я нажимаю на tab1, я создаю intent12, метод onCreate(Bundle emptyBundle) не вызывается, но вызывается onResume() (нормальное поведение).

Я добавил специальные дополнения в intent11 и intent12, чтобы создать Activity1, поэтому я получаю к нему доступ, используя getIntent().getExtras().

Моя проблема: во второй раз, когда я захожу на tab1, intent12 используется для запуска Activity, но результат getIntent() по-прежнему intent11. Поэтому я не могу получить дополнения, установленные в intent12, я могу только получить дополнения, установленные в intent11.

Что я делаю не так? Должен ли я избегать добавления дополнений () в намерения? Спасибо.

Спасибо.

PS: на данный момент я установил специальный флаг для намерения заставить вызывать onCreate (), но я уверен, что это не очень хороший способ сделать это.

Ответы [ 3 ]

6 голосов
/ 23 июля 2012

Я верю, что вы ищете здесь: https://developer.android.com/reference/android/app/Activity.html#onNewIntent%28android.content.Intent%29

onNewIntent (Intent newIntent) позволяет переопределить предыдущее намерение, которое использовалось для создания / возобновления приложения с самым новым намерением.

1 голос
/ 13 сентября 2016

В Xamarin.Android / Monotouch я просто добавил следующий метод в свою активность, и он работал гладко.

    protected override void OnNewIntent(Intent intent)
    {
        base.OnNewIntent(intent);
        Intent = intent;
    }

Принцип должен хорошо работать и в родном Android.

1 голос
/ 26 июля 2011

нет, вы должны иметь возможность добавлять дополнения, но мне интересно, перезаписываются ли дополнения, когда вы создаете новые намерения, поэтому я предлагаю попробовать это:

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

Bundle bundle = getResultExtras(false);

Затем вы можете создать свое новое намерение, когда будете готовываши данные из пакета вы можете сделать

Bundle bundle = getResultExtras(false);

снова, а затем получить данные, как обычно, из пакета, просто убедитесь, что дополнения, введенные вами в Intent1, не имеют того же имени ключав качестве дополнений, которые вы вводите в Intent2

, надеюсь, что это поможет некоторым.

, если вам нужна более конкретная помощь, может быть полезно опубликовать ваш код.

...