Плитки карт Google Android не загружаются при нажатии кнопки «назад» - PullRequest
0 голосов
/ 03 декабря 2010

У меня есть приложение для Android, которое использует Google Maps.Мое первое занятие начинается с просмотра карты с помощью кликабельных значков.При щелчке значка запускается новое действие (намерение) с другой картой.Затем на новой карте я нажимаю кнопку «Назад», которая возвращает меня к моей первой карте.Однако, когда я начинаю масштабировать или перемещаться по карте, отображаются только те плитки, которые были загружены изначально.Как я могу это изменить?

Если вы измените ориентацию телефона, карта обновится, а затем будет вести себя нормально (потому что приложение перезапустилось), поэтому я добавил android: configChanges = "direction", чтобы остановить перезапуск при изменении ориентации,Я добавил это, потому что я не хочу снова загружать все маркеры (использует веб-сервис и может занять некоторое время).

Я просто хочу, чтобы плитки загружались, когда я нажимал «назад» на исходную карту.Есть идеи?

1 Ответ

3 голосов
/ 09 декабря 2010

Я недавно столкнулся с этой проблемой!Проверьте свой журнал - вы, вероятно, получаете сообщение об ошибке «IllegalStateException: Пул подключений выключен».Также как и я, единственные ответы, которые вы нашли, казалось, были для людей, которые неправильно настроили свой ключ API Google.: - \

В итоге я столкнулся с этой ссылкой .(Обычно вы должны войти в свою учетную запись Google, чтобы прочитать эти сообщения)

Похоже, что существует ошибка, которая допускает только одно действие карты для приложения.Наверное, что-то связанное с обновлением карты.Я справился с этим, завершив каждое действие карты после загрузки нового, после чего действие было перезагружено полностью, когда пользователь возвращается к нему.Это не идеальный вариант, но пока он хорошо работает для меня.

Более подробно:

  1. Сохраните любую информацию о карте, которую вы хотите получить позже.Сначала приходят на ум центр карты и масштаб карты.Поместите его куда-нибудь глобально или передайте с вашим намерением.

  2. После запуска намерения для второго действия вызовите finish () для первого.Если вы хотите, чтобы две карты отображались пользователю как одна и та же карта, вам нужно убрать скользящий переход, который происходит по умолчанию при запуске нового действия.Сделайте это, вызвав эту строку сразу после окончания ():

overridePendingTransition(0, 0);

  1. Когда ваше второе действие карты должно закончиться, повторите шаг1, если необходимо, а затем снова загрузите первое действие карты, используя тот же метод, что и в шаге 2. Код из 2 будет идти в методе действия onBackPressed (), и в любом другом месте, где это уместно (возможно, у вас есть кнопка отмены или что-то еще).

  2. В onCreate первого действия убедитесь, что вы проверили материал, который был сохранен с момента последнего просмотра этого действия, и измените свою карту соответствующим образом.

Возможно, это было многословно, но я часто использую этот сайт, и я всегда ценю ответы, которые говорят слишком много больше, чем те, которые говорят слишком мало, ха-ха!

...