Android Google Maps w Fragment
Opracowuję aplikację z menu na górze z niektórymi przyciskami w tym menu. Próbuję dodać mapy google do jednego z przycisków, ale nie odniosłem sukcesu. Śledziłemten samouczek ale zamiast implementować google maps bezpośrednio doMainActivity
Dodałem je do fragmentu uruchamianego po naciśnięciu przycisku. Wszystko działało dobrze. Po naciśnięciu przycisku mapy ładują się i działają tak, jak powinny. Po naciśnięciu przycisku home, aby wrócić doMainActivity
działa doskonale, ale gdy chcę załadować mapy ponownie, daje mi todebugging error: Class File Editor: Source not found
To jest kodGoogleMaps
fragment:
public class GoogleMaps extends Fragment{
private GoogleMap googleMap;
double latitude = 46.514249;
double longitude = 15.080183;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View myFragmentView = inflater.inflate(R.layout.maps_layout, container, false);
try {
// Loading map
initilizeMap();
} catch (Exception e) {
Log.e("ERROR", "ERROR IN CODE: " + e.toString());
e.printStackTrace();
}
return myFragmentView;
}
private void initilizeMap() {
if (googleMap == null) {
googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
googleMap.addMarker(new MarkerOptions().position(new LatLng(latitude, longitude)));
CameraPosition cameraPosition = new CameraPosition.Builder().target(
new LatLng(latitude, longitude)).zoom(12).build();
googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
// check if map is created successfully or not
if (googleMap == null) {
Toast.makeText(getActivity(),
"Sorry! unable to create maps", Toast.LENGTH_SHORT)
.show();
}
}
}
}
Każda pomoc zostanie doceniona.
EDYCJA: Gdybym nie był wystarczająco szczegółowy. Działa, gdy ładujęfragment
raz (po raz pierwszy), ale nie działa, gdy próbuję załadować go ponownie (drugi raz).
EDIT v2: sam znalazłem rozwiązanie. Wszystko, co musiałem zrobić, to dodaćOnDestroyView
metoda:
public void onDestroyView()
{
super.onDestroyView();
Fragment fragment = (getFragmentManager().findFragmentById(R.id.map));
FragmentTransaction ft = getActivity().getFragmentManager().beginTransaction();
ft.remove(fragment);
ft.commit();
}
W każdym razie dzięki.