Android 导航抽屉中的谷歌地图-空指针异常,哪个是正确的片段?
我试图在我的应用程序中实现谷歌地图。我使用一个导航抽屉,并像这样调用我的片段:Android 导航抽屉中的谷歌地图-空指针异常,哪个是正确的片段?,android,google-maps,android-fragments,fragment,navigation-drawer,Android,Google Maps,Android Fragments,Fragment,Navigation Drawer,我试图在我的应用程序中实现谷歌地图。我使用一个导航抽屉,并像这样调用我的片段: //Main-Class public void onNavigationDrawerItemSelected(int position) { Fragment myFramgent = null; switch (position) { ... case 2 : myFramgent = new Fillilaen();
//Main-Class
public void onNavigationDrawerItemSelected(int position) {
Fragment myFramgent = null;
switch (position) {
...
case 2 :
myFramgent = new Fillilaen();
System.out.println("FILLIAEN");
break;
...
}
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.container, myFramgent)
.commit();
}
菲利亚兰班
public class Fillilaen extends SupportMapFragment implements ... {
private GoogleMap mMap;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
myView = inflater.inflate(R.layout.fillialen2, container, false);
return myView;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
SupportMapFragment fragment = (SupportMapFragment) this.getChildFragmentManager().findFragmentById(R.id.location_map);
fragment.getMapAsync(this); //ERROR COMES HERE
}
public void onMapReady(GoogleMap googleMap) {
//never enter this..
mMap = googleMap;
Marker hamburg = mMap.addMarker(new MarkerOptions().position(HAMBURG).title("Hamburg"));
}
}
我的XML
<fragment
android:id="@+id/location_map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment" />
我有一个NullPointerException,我完全不知道为什么。我在谷歌上搜索了很多,发现了类似的问题,但没有任何帮助
Nullpointer异常的开头:
致命异常:主
进程:roth.com.test6,PID:13097
java.lang.NullPointerException:尝试在空对象引用上调用接口方法'void com.google.maps.api.android.lib6.e.fl.o()
在com.google.maps.api.android.lib6.e.y.b(未知来源)
谢谢大家! 您试图将SupportMapFragment嵌套在外部SupportMapFragment中 如果您的片段扩展了SupportMapFragment,则无需膨胀任何布局xml,您只需调用
this.getMapAsync()
,因为this
引用了SupportMapFragment:
public class MyMapFragment extends SupportMapFragment
implements OnMapReadyCallback {
private GoogleMap mMap;
private Marker marker;
public MyMapFragment () {
}
@Override
public void onResume() {
super.onResume();
setUpMapIfNeeded();
}
private void setUpMapIfNeeded() {
if (mMap == null) {
//"this" is a SupportMapFragment,
//and "this" implements OnMapReadyCallback
// so you can call this.getMapAsync(this) here:
getMapAsync(this);
}
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
setUpMap();
}
private void setUpMap() {
mMap.setMyLocationEnabled(true);
mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
@Override
public void onMapClick(LatLng point) {
//remove previously placed Marker
if (marker != null) {
marker.remove();
}
//place marker where user just clicked
marker = mMap.addMarker(new MarkerOptions().position(point).title("Marker")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_MAGENTA)));
}
});
}
}