Проблемы с фрагментом GoogleMap - PullRequest
2 голосов
/ 13 октября 2011

Я конвертирую написанное мной приложение, и его часть - это компонент GoogleMap, который я пытаюсь вставить во фрагмент, и у меня возникают проблемы.

Сначала я посмотрел на android-support-v4-googlemaps и не был рад, что каждая FragmentActivity будет реализовывать Карты, но следуя этим инструкциям по созданию MapFragmentActivity У меня были проблемы, так как теперь карта будет отображаться, но при повороте я получу «У вас есть только один MapView в ошибке MapActivity» - после этого ответа регистрации MapView в коде во фрагменте я получил ошибку, что я мог только зарегистрировать MapView в MapActivity.

Итак, я сейчас внедрил android-support-v4-googlemaps , и я все еще получаю ошибку при повороте.

Я зашел в тупик, и я немного расстроен - кто-нибудь знает, как это исправить?

Ответы [ 2 ]

1 голос
/ 04 декабря 2012

Google выпустил Map API версии 2 .Это дает вам MapFragment и SupportMapFragment .Это должно решить проблемы, которые у вас были раньше.

1 голос
/ 12 ноября 2011

У меня была такая же проблема с библиотекой android-support-v4-googlemaps. Решение было довольно простым после тщательного прочтения работы фрагментов. В основном, каркас сохраняет состояние фрагментов при вращении. Итак, что вам нужно сделать, это только создать экземпляры ваших фрагментов, если нет сохраненного состояния (т.е. при первом запуске вашей активности).

Вот пример кода, который работал для меня:

public class MyMapFragmentActivity extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_map);

        //... init views, do stuff ...

        // Only instantiate fragments at first run
        if (savedInstancestate == null) {
            // Add map & list fragments
            FragmentManager fm = getSupportFragmentManager();
            MapFragment mapFragment = new MapFragment();
            AnotherFragment another = new AnotherFragment();
            FragmentTransaction ft = fm.beginTransaction();
            ft.add(R.id.fragment_map, mapFragment, "fragment_map");
            ft.add(R.id.fragment_another, anotherFragment, "fragment_another");
            ft.commit();
        }

        //... do more stuff ...
    }

}

В этом случае я даже не переопределил onSavedInstanceState(), так как у меня не было ничего для сохранения. Имейте в виду, что это решение является с использованием библиотеки FragmentMapActivity hack.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...