У меня та же проблема, что и в первоначальном вопросе. Я знаю, что вы все опубликовали рабочее решение, НО, во всех решениях отсутствует одна вещь: инкапсуляция. Что я имею в виду - если в одном действии у меня есть 10 представлений, которые должны (по какому-либо событию) начинать другое упражнение, то должно быть НОРМАЛЬНО, чтобы иметь возможность запускать это новое действие из представления, которое нуждается в этом действии. Вы все пытаетесь убедить, что лучше обрабатывать все новые возможные действия из первоначального, чем почему мы добавили различную логику в каждом представлении. Мы можем захотеть переиспользовать код и создать одно пользовательское представление, которое может работать независимо от того, где мы его используем (работа может включать показ другого действия, например, для выбора чего-либо).
Я знаю, что это невозможно (или пока что не возможно) и является явным доказательством того, что Android SDK еще не готов для обработки действительно больших приложений.
Если вам нужен пример: в любом реальном бизнес-приложении, которое имеет, например, список клиентов (это должно быть представление), представление должно иметь возможность самостоятельно запускать действия addcustomer, редактировать действия клиентов и т. Д., Независимо от куда вы помещаете это представление списка клиентов (элемент управления) - потому что в больших приложениях вам нужно повторно использовать компоненты (вам может потребоваться показать элемент управления списком клиентов в операции заказа продукта, в операции расписания и т. д.).
Одним из возможных решений может быть:
- начать новое действие (используя контекст представления (обычно это должно быть родительское действие).
- при новом событии закрытия активности либо вызовите метод напрямую в вызывающем представлении (в зависимости от случая и возможностей): либо статический, который обрабатывает код, который вы обычно выполняете в результате действия, либо попытайтесь передать экземпляр вызывающего просматривать новое действие и делать то же самое. Таким образом, вы можете обрабатывать новое действие, не позволяя содержащемуся действию ничего о нем знать.