Мы находимся в процессе написания приложения с 4 вкладками: Карта, Люди, Места, События. Люди, места и события в приложении отображаются как значки на карте. По умолчанию на вкладках «Люди», «Места» и «События» отображаются списки, индивидуальные визуализации, отображающие все Люди, Места и События соответственно.Android - вкладки, MapView, действия в пределах вкладок
alt text http://web6.twitpic.com/img/37202700-f92052dc474b74e1760edda1c47f6940.4adcb134-scaled.png
Сейчас, прямо сейчас каждый из вкладок имеет своим содержанием намерению набор для запуска соответствующей деятельности. Например, есть MapTabActivity, который расширяет MapActivity, ShowPeopleListActivity, который показывает людей и т. Д. И т. Д.
Я вижу lotofStackOverflowquestions/ответы о том, что из-за различных ограничений в способе, которым TabHost настроен, то лучше не использовать деятельности, как содержание вкладок. Например, невозможно запустить новое действие и заменить его на существующую активность на вкладке, тогда как можно переключить вид с другим видом.
Теперь я на распутье. Мы (к лучшему или худшему) посвятили много времени, пытаясь заставить это приложение работать так, как оно в настоящее время структурировано, с Акциями как содержанием вкладок. Когда нажимается значок, соответствующий лицу, месту или событию, он запускает VIEW Intent на URI, соответствующий этому объекту; это получает активность, которая затем показывает объект. Тот же механизм работает как на Карте, так и в отдельных списках. Нам очень нравится свободное соединение, которое это дает нам; мы просто предоставляем команду VIEW и URI человеку/месту/событию, и это автоматически приводит нас к правильной деятельности. Конечно, запущенная деятельность закрывает представление вкладки, а не появляется внутри этого, но мы были готовы жить с этим.
Вот проблема: из шоу-активности мы хотим, чтобы мы могли вернуться к карте, сосредоточенной на этом человеке, месте или событии. Мы можем запустить новую активность, чтобы снова отобразить карту, но теперь у нас есть активность карты как содержимое вкладки, а также активность шоу, а также новая активность карты в стеке действий; учитывая, насколько ресурсоемким является активность карты, я предполагаю, что это не идеальный способ.
Я думаю, мой вопрос в том, есть ли полезный учебник где-то, где точно показано, как выполнять сложные задачи с помощью TabHost? Я видел HelloTabWidget; Я ищу что-то гораздо более сложное, чем это. Я волнуюсь, что если мы перейдем к способу делать вид на основе View, нам нужно будет сделать много домашнего хозяйства, чтобы перехватить все задние события, попытаться отключить просмотры и т. Д. И т. Д., А также решительно связывая нашу программу так, как мы этого не хотим.
Любые предложения по дальнейшему продвижению будут очень оценены. Мы новичок в Android, поэтому мы стараемся следовать установленным передовым методам, но трудно, когда несколько примеров, которые мы видели, слишком упрощены для нашего случая использования.
ОК, я вижу, что если мы сохраним все намерения так же, как и активность Show, то обратные события обрабатываются точно так же. Таким образом, я предполагаю, что реальная сложность (и боль в пояснице) была бы, если бы мы программным образом отключили содержимое вкладок, а не запускали намерения. Например. вкладке «Люди», которая обычно отображает список людей, предлагается переключиться на представление «Показать человека», когда на него нажимается данное лицо. В таком случае нам придется иметь дело со стеком взглядов сами? – I82Much
Кроме того, как можно иметь карту внутри вкладки без активности в качестве содержимого вкладки? Это возможно? – I82Much
w/r/t ваш первый комментарий, да, вам нужно будет сделать собственное управление стеком. w/r/t ваш второй комментарий, да вы можете AFAIK. Сделайте свой основной вид деятельности MapActivity, а не TabActivity. Единственное, что TabActivity делает для вас, - это установка вызова() автоматически на TabHost, которую вам нужно будет сделать самостоятельно, прежде чем добавлять какие-либо TabSpec. Затем MapActivity дает вам то, что вам нужно для размещения карты на вкладке. Возможно, здесь есть проблемы, но с манжетой я думаю, что она должна работать нормально. – CommonsWare