2014-10-01 93 views
1
public class OutdoorFragment extends Fragment { 
private GoogleMap googleMap; 
double latitude = 1.31039; 
double longitude = 103.7784; 

public OutdoorFragment() { 
} 

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_outdoor, container, 
      false); 

    try { 
     // Loading map 
     initilizeMap(); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    googleMap.getUiSettings().setZoomGesturesEnabled(true); 

    googleMap.getUiSettings().setRotateGesturesEnabled(true); 

    googleMap.getUiSettings().setMyLocationButtonEnabled(true); 

    googleMap.setMyLocationEnabled(true); 

    // create marker 
    MarkerOptions marker = new MarkerOptions().position(
      new LatLng(latitude, longitude)).title("Koh Chi Hao "); 

    // adding marker 

    marker.icon(BitmapDescriptorFactory 
      .defaultMarker(BitmapDescriptorFactory.HUE_VIOLET)); 
    googleMap.addMarker(marker); 


    return rootView; 
} 


private void initilizeMap() { 
    if (googleMap == null) { 
     googleMap = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 

     // check if map is created successfully or not 
     if (googleMap == null) { 
      Toast.makeText(getActivity().getApplicationContext(), 
        "Sorry! unable to create maps", Toast.LENGTH_SHORT) 
        .show(); 
     } 
    } 
} 

@Override 
public void onResume() { 
    super.onResume(); 
    initilizeMap(); 
} 

}無法從片段轉換爲SupportMapFragment

您好,我initializeMap()內,googleMap = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();口口聲聲說Cannot cast from Fragment to SupportMapFragment。我不確定發生了什麼事。 在此先感謝

+0

它可能與您在佈局上定義的片段類有關。你能不能顯示你的R.layout.fragment_outdoor文件? – joao2fast4u 2014-10-01 09:10:47

+0

您是否使用'support library'中的'Fragments'而不是'android.app.'?活動是「FragmentActivity」還是「ActionBarActivity」? – EpicPandaForce 2014-10-01 09:11:50

+0

嘗試使用'googleMap =((SupportMapFragment)getSupportFragmentManager()。findFragmentById(R.id.map))。getMap(); '而不是 – joao2fast4u 2014-10-01 09:13:40

回答

1

變化;

googleMap = ((SupportMapFragment) getFragmentManager(). 
      findFragmentById(R.id.map)).getMap(); 

與此;

googleMap = ((SupportMapFragment) getSupportFragmentManager(). 
      findFragmentById(R.id.map)).getMap(); 

注意getSupportFragmentManagerandroid.support.v4.app.FragmentActivity

好運。

1

您需要使用android.support.v7.app.Fragment;

需要用getSupportFragmentManager

基本上你需要V7庫

1

檢查您的活動佈局。帶有映射的片段必須具有以下屬性name="com.google.android.gms.maps.SupportMapFragment"以指示您使用哪個片段類。

+0

isnt it class =「com.google.android.gms.maps.SupportMapFragment」?或者它是否意味着相同? – 2015-06-25 11:20:44

+1

看起來是一樣的東西http://developer.android.com/guide/components/fragments.html – 2015-06-25 11:50:54