Проверьте, вызвана ли активность для результата

Можно ли узнать, была ли вызвана какая-либо активность для результата, используя startActivityForResult() или если только начал использовать startActivity()?

Мне нужно это контролировать, если его вызванный результат будет другим.

2 ответа

Решение

Когда ваша деятельность была начата только startActivity() getCallingActivity() метод в целевой деятельности вернется null,

Когда он был вызван startActivityForResult() вернет имя вызывающей деятельности.

Смотрите Документы для getCallingActivity():

Возвратите имя действия, которое вызвало это действие. Это кто данные в setResult() будет отправлен Вы можете использовать эту информацию для подтверждения того, что получателю разрешено получать данные.

Примечание: если вызывающая деятельность не ожидает результата (то есть она не использовала startActivityForResult(Intent, int) форма, которая включает в себя код запроса), то вызывающий пакет будет нулевым.

Возвращает

ComponentName действия, которое получит ваш ответ, или ноль, если его нет.

Вы можете проанализировать логическое значение, поместив extra внутри намерения.

      //First Activity
Intent i = new Intent(FirstActivity.this, SecondActiviy.class);   
boolean isForResult = true;
i.putExtra("for-result", isForResult);

Затем во втором действии получите значение:

      //Second Activity
boolean isForResult = getIntent().getBooleanExtra("for-result" , false);

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

      //Not necesary at all.
boolean isForResult = false;

Вам не нужно разбирать ложное логическое значение.

Другие вопросы по тегам