8

そのメニュー内にいくつかのボタンがあるメニューを上部に持つアプリを開発しています。ボタンの 1 つに Google マップを追加しようとしていますが、うまくいきません。私はこのチュートリアルに従っていましたが、Googleマップを直接実装する代わりにMainActivity、ボタンが押されたときに起動されるフラグメントに追加しました。すべてうまくいきました。ボタンを押すと、マップが読み込まれ、正常に機能します。ホームボタンを押して戻るとMainActivity完全に機能しますが、マップを再度ロードしたい場合は、debugging error: Class File Editor: Source not found

これはGoogleMapsフラグメントのコードです:

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();
            }
       }
 }
}

どんな助けでも大歓迎です。

編集:私が十分に具体的でなければ。fragment一度(初めて)ロードすると機能しますが、再度ロードしようとすると(2回目)機能しません。

EDIT v2:私は実際に自分で解決策を見つけました。私がしなければならなかったのは、OnDestroyViewメソッドを追加することだけでした:

public void onDestroyView() 
 {
         super.onDestroyView(); 
         Fragment fragment = (getFragmentManager().findFragmentById(R.id.map));  
         FragmentTransaction ft = getActivity().getFragmentManager().beginTransaction();
         ft.remove(fragment);
         ft.commit();
 }

とにかくありがとう。

4

2 に答える 2

3
public class MapCurrentLoactionFragment extends Fragment {
    public static MapView mapView;

    public static GoogleMap map;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View v = inflater.inflate(R.layout.fragment_currentlocation_map,
                container, false);
          try
          {

        // Gets the MapView from the XML layout and creates it
        mapView = (MapView) v.findViewById(R.id.mapview);

        mapView.onCreate(savedInstanceState);
        mapView.onResume();
        // Gets to GoogleMap from the MapView and does initialization stuff
        map = mapView.getMap();
        // Changing map type
        map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
        // googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
        // googleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
        // googleMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
        // googleMap.setMapType(GoogleMap.MAP_TYPE_NONE);

        // Showing / hiding your current location
        map.setMyLocationEnabled(false);

        // Enable / Disable zooming controls
        map.getUiSettings().setZoomControlsEnabled(true);

        // Enable / Disable my location button
        map.getUiSettings().setMyLocationButtonEnabled(true);

        // Enable / Disable Compass icon
        map.getUiSettings().setCompassEnabled(true);

        // Enable / Disable Rotate gesture
        map.getUiSettings().setRotateGesturesEnabled(true);

        // Enable / Disable zooming functionality
        map.getUiSettings().setZoomGesturesEnabled(true);

        MapsInitializer.initialize(this.getActivity());
      }
          catch(Exception e)
          {
              System.out.println(e);
          }
        return v;
    }

XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <com.google.android.gms.maps.MapView
         android:id="@+id/mapview"
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" />

</LinearLayout>
于 2014-10-04T12:53:18.480 に答える