Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 导航抽屉中的谷歌地图-空指针异常,哪个是正确的片段?_Android_Google Maps_Android Fragments_Fragment_Navigation Drawer - Fatal编程技术网

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

            }
        });

    }

}