Запуск действия для результата из другого действия, которое должно возвращать результат

У меня есть активность, которая запускает другую для результата. Дело в том, что мне нужно вызвать другое действие для результата из этого. Это возможно?

В качестве примера действие A вызывает действие B для результата, но действие B должно вызвать действие C для результата, чтобы получить правильные данные.

Я не знаю, если при запуске действия C для результата действие B отправит свой (неполный) результат первому вызову (мероприятие A).

В случае, если это можно сделать, как я должен обрабатывать результаты этих мероприятий?

Спасибо!

1 ответ

Решение

Это отлично. Пока действие B все еще выполняется, оно не будет запускать что-либо обратно к A, пока не завершится.

Запуск A -> B -> C, а затем закрытие C будет означать B onActivityResult сработает, затем закрытие B сработает onActivityResult,

Так что в Деятельности B вам понадобится некоторая логика вроде:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == ACTIVITY_C && resultCode == RESULT_XXX) {
        // Get the result from C, etc. Whatever you need to do
        String stuff = data.getStringExtra("XXX");
        Intent output = new Intent();
        output.putExtra(XXX, stuff);
        setResult(RESULT_XXX, output);
        finish();
    }
}

Затем вы можете поймать это в упражнении А.

Другой вариант: если вам нужно обмениваться данными по многим действиям, а логика кажется сложной, вы можете рассмотреть возможность использования класса Application для хранения глобального состояния, к которому вы можете получить доступ из всех действий.

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