Android 无法从片段强制转换为SupportMapFragment
} 大家好,在我的Android 无法从片段强制转换为SupportMapFragment,android,google-maps,android-fragments,Android,Google Maps,Android Fragments,} 大家好,在我的initializeMap()中,googleMap=((SupportMapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap()一直说不能从片段转换为SupportMapFragment。我不知道发生了什么事。 提前感谢您需要使用android.support.v7.app.Fragment 并且需要使用getSupportFragmentManager 基本上,您需要对v7库进行更改 publi
initializeMap()
中,googleMap=((SupportMapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap()
一直说不能从片段转换为SupportMapFragment
。我不知道发生了什么事。
提前感谢您需要使用android.support.v7.app.Fragment 并且需要使用getSupportFragmentManager 基本上,您需要对v7库进行更改
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();
}
有了这个,
googleMap = ((SupportMapFragment) getFragmentManager().
findFragmentById(R.id.map)).getMap();
请注意,getSupportFragmentManager
来自android.support.v4.app.FragmentActivity
祝你好运。检查你的活动布局。带有映射的片段必须具有以下属性
name=“com.google.android.gms.maps.SupportMapFragment”
,以指示您使用的片段类。它可能与您在布局上定义的片段类有关。您可以显示您的R.layout.fragment\u户外文件吗?您使用的是支持库中的Fragments
,而不是android.app.
?该活动是FragmentActivity
还是ActionBarActivity
?尝试使用googleMap=((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map)).getMap()
insteadUse com.google.android.gms.maps.MapFragment在您的xml文件中,或者使用getSupportFragmentManager()而不是getFragmentManager()不是class=“com.google.android.gms.maps.SupportMapFragment”吗?或者它的意思是一样的?看起来这和我面临的问题是一样的:“不可转换的类型;无法将'android.support.v4.app.Fragment'转换为'com.google.android.gms.maps.SupportMapFragment'”。将SupportMapFragment与v4片段一起使用,仍然在编辑器中给出强制转换异常。
googleMap = ((SupportMapFragment) getSupportFragmentManager().
findFragmentById(R.id.map)).getMap();