#android #view #android-activity #android-layout #activitygroup
#Android #Вид #android-активность #android-layout #activitygroup
Вопрос:
Я пытаюсь реализовать собственный MapView внутри веб-платформы приложений (quickconnect). Прямо сейчас весь фреймворк состоит из одного действия (это неизбежно, поскольку фреймворк полностью запускает тело приложения в WebView, а фреймворк анализирует вызовы javascript для встроенных функций, таких как звук и собственные системные представления). Что я понял, так это то, что MapView — странный зверь, поскольку его нужно запускать внутри MapActivity.
Итак, у меня остается два варианта: преобразовать единственное действие, которое запускает фреймворк, в MapActivity, добавив методы для управления MapView внутри (проблема в том, что мы хотим внести код обратно в проект фреймворка, а система обрабатывает MapActivities иначе, чем обычные действия, в результате чего все приложения, не относящиеся к карте, используют больше ресурсов, чем необходимо), или каким-то образом наложить MapActivity поверх основного действия, которое запускает WebView, при этом основное действие взаимодействует с MapActivity через Intents.
Я полностью осознаю, что перекрывающиеся действия полностью противоречат дизайну приложений для Android, но мне интересно, возможно ли это. Я просмотрел ActivityGroups, и я не могу найти никаких примеров пользовательской ActivityGroup, которая показывает два действия на экране одновременно, не говоря уже о перекрытии.
tl; dr: Возможна ли реализация перекрывающихся действий в Android и как мне это сделать?
Комментарии:
1. Для вашего вопроса требуется пробел, пустые строки и, возможно, вопросительный знак в конце с четким вопросом…
2. Немного прояснил это, добавил много объяснений, потому что я знаю, что это полностью противоречит дизайну Android.
Ответ №1:
Неясно, как на самом деле будет работать ваша цель. Давайте предположим, что у вас действительно есть «перекрывающиеся действия». Что тогда? Чего ты добился? Не похоже, что код JavaScript из первого действия может что-либо сделать со вторым действием. Вам придется реализовать 100% вашей бизнес-логики для MapActivity
в MapActivity
. Поскольку вам все равно придется научить «quickconnect» вызывать «quickconnect», startActivity()
просто реализуйте свою карту как обычную MapActivity
, на Java, и покончим с этим.
Если, OTOH, ваша цель состоит в том, чтобы код JavaScript, поддерживаемый quickconnect, управлял MapView
, тогда у вас нет выбора, кроме как реорганизовать весь quickconnect, чтобы использовать композицию, а не наследование, чтобы движок quickconnect можно было использовать внутри Activity
или a MapActivity
. В любом случае, это может оказаться необходимым в долгосрочной перспективе, поскольку FragmentActivity
это необходимо для использования фрагментов в библиотеке совместимости Android, и можно предположить, что quickconnect должен обеспечивать поддержку планшетов и телевизоров с использованием фрагментов.