Помогите с версткой кода - PullRequest
0 голосов
/ 02 июня 2011

Я надеюсь, что смогу объяснить это правильно. Я делаю приложение для Android, которое, когда вы открываете его, подключается к серверу JSON, извлекает данные (GPS-координаты) и динамически создает «меню» на основе полученных данных (View1). Он будет состоять из нескольких кнопок, которые при нажатии будут загружать MapView (View2) с координатами, полученными из JSON, представленными в виде маркеров на карте.

Я начинаю с setContentView(R.layout.menu), затем получаю данные, нажимаю кнопку, загружаю setContentView(R.layout.map) и рисую маркеры. Проблема в том, что у меня есть onLocationChangedListener, который проходит через код для первоначальной настройки меню. Когда он пытается построить меню, когда mapView открыто, я получаю принудительное закрытие. К сожалению, этот код также обновляет местоположение пользователя и расположение оверлеев и заново рисует карту.

Мой вопрос: могу ли я проверить макет, чтобы сказать что-то вроде if (isActive), чтобы я мог выполнять действия, только если текущее представление находится в фокусе?

ИЛИ я должен отказаться от всего этого и начать заново с лучшей версткой? (Предложения приветствуются)

Резюме ::: У меня 2 вида (меню, карта). Нужен доступ к одним и тем же данным. В настоящее время работает с setContentView(), но выдает принудительное закрытие при выполнении действий в неактивном представлении.

1 Ответ

2 голосов
/ 02 июня 2011

Если я правильно понимаю, вы используете setContentView (someLayoutId), чтобы каждый раз изменять то, что отображает действие. Это не то, как обычно работают приложения для Android. Когда вы извлекаете ресурс, вам нужен корневой элемент для ссылки на него, поэтому вы получаете исключения, когда представление не является «активным».

У вас есть несколько других вариантов оценки:

  • Создайте новый MapActivity , чтобы показать карту
  • Создайте TabActivity и добавьте карту в качестве новой вкладки
  • Используйте ViewSwitcher , чтобы решить, показывать карту или нет.
...