Mapy android przestają odpowiadać po wznowieniu fragmentu
Poniżej znajduje się mój podstawowy kod do sterowania mapami. Później zrobię kilka naprawdę zaawansowanych rzeczy. Wszystko wydaje się działać idealnie, dopókionResume()
.
Oto układ, przechodzisz przez aplikację w 1 pojedynczym działaniu, z wieloma fragmentami. TomapFragment
znajduje się wewnątrz fragmentu. To działa dobrze. Kiedy jednak dodam kolejny fragment i pchnę go na stos, kiedy wrócę do niego później, mapa nie odpowiada.
Próbowałem to naprawić, przenosząc moje połączenie dosetupMaps();
wonResume()
, jednak to spowodowałogMaps
być null, gdy go otrzymamgMaps = mapFragment.getMap();
wsetViews()
.
Jak mam sobie z tym poradzić?
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
root = inflater.inflate(R.layout.fragment_maps, container, false);
setupMaps();
return root;
}
private void setupMaps()
{
gMaps = null;
fm = getActivity().getSupportFragmentManager();
mapFragment = SupportMapFragment.newInstance();
android.support.v4.app.FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.add(R.id.flMapContainer, mapFragment).commit();
}
@Override
public void onResume()
{
super.onResume();
mapFragment.onResume();
setViews();
}
private void setViews()
{
gMaps = mapFragment.getMap();
getData(); // initializes overlays, markers, polygons etc.
}
@Override
public void onPause()
{
mapFragment.onPause();
super.onPause();
}