title: Google Maps Fragment returning null inside a fragment
body: <p>So I have an empty fragment that contains a map fragment. Whenever I try to activate the fragment containing the map, my app crashes and returns a null pointer error on this line:</p>
  
  <pre><code>map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
                  .getMap();
  </code></pre>
  
  <p>Full Error message:</p>
  
  <pre><code>java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.android.gms.maps.GoogleMap com.google.android.gms.maps.MapFragment.getMap()' on a null object reference
              at com.collusion.serviceassistant.ReturnVisitDetails.onViewCreated(ReturnVisitDetails.java:39)
              at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:904)
              at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062)
              at android.app.BackStackRecord.run(BackStackRecord.java:684)
              at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447)
              at android.app.FragmentManagerImpl$1.run(FragmentManager.java:443)
              at android.os.Handler.handleCallback(Handler.java:733)
              at android.os.Handler.dispatchMessage(Handler.java:95)
              at android.os.Looper.loop(Looper.java:136)
              at android.app.ActivityThread.main(ActivityThread.java:5001)
              at java.lang.reflect.Method.invoke(Native Method)
              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
  </code></pre>
  
  <p>Here is my fragment code:</p>
  
  <pre><code>import android.app.Activity;
  import android.app.Dialog;
  import android.net.Uri;
  import android.os.Bundle;
  import android.app.Fragment;
  import android.util.Log;
  import android.view.LayoutInflater;
  import android.view.View;
  import android.view.ViewGroup;
  
  import com.google.android.gms.common.ConnectionResult;
  import com.google.android.gms.common.GooglePlayServicesUtil;
  import com.google.android.gms.maps.CameraUpdateFactory;
  import com.google.android.gms.maps.GoogleMap;
  import com.google.android.gms.maps.MapFragment;
  import com.google.android.gms.maps.MapView;
  import com.google.android.gms.maps.model.BitmapDescriptorFactory;
  import com.google.android.gms.maps.model.LatLng;
  import com.google.android.gms.maps.model.Marker;
  import com.google.android.gms.maps.model.MarkerOptions;
  
  
  public class ReturnVisitDetails extends Fragment {
  
      static final LatLng HAMBURG = new LatLng(53.558, 9.927);
      static final LatLng KIEL = new LatLng(53.551, 9.993);
      private GoogleMap map;
      public View onCreateView(LayoutInflater inflater, ViewGroup container,
                               Bundle savedInstanceState) {
          View rootView = inflater.inflate(R.layout.fragment_return_visit_add, container, false);
          return rootView;
      }
  
      public void onViewCreated(View view, Bundle savedInstanceState)
      {
          // Get a handle to the Map Fragment
          map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
                  .getMap();
          Marker hamburg = map.addMarker(new MarkerOptions().position(HAMBURG)
                  .title("Hamburg"));
          Marker kiel = map.addMarker(new MarkerOptions()
                  .position(KIEL)
                  .title("Kiel")
                  .snippet("Kiel is cool")
                  .icon(BitmapDescriptorFactory
                          .fromResource(R.drawable.ic_launcher)));
  
          // Move the camera instantly to hamburg with a zoom of 15.
          map.moveCamera(CameraUpdateFactory.newLatLngZoom(HAMBURG, 15));
  
          // Zoom in, animating the camera.
          map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);
      }
  }
  </code></pre>
  
  <p>And my parent fragment XML layout:</p>
  
  <pre><code>&lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      tools:context="com.collusion.serviceassistant.ReturnVisitDetails"
      android:background="#009688"&gt;
  
  
      &lt;fragment
          android:id="@+id/map"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          class="com.google.android.gms.maps.MapFragment" /&gt;
  
  &lt;/RelativeLayout&gt;
  </code></pre>
  
  <p>Anyone have an idea why the map fragment is returning null?</p>
  
  <p>EDIT: So now I have this code to initialize the map:</p>
  
  <pre><code>MapFragment mapFragment = new MapFragment();
          FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
          transaction.add(R.id.rl_map_container, mapFragment).commit();
          map = mapFragment.getMap();
          Marker hamburg = map.addMarker(new MarkerOptions().position(HAMBURG)
                  .title("Hamburg"));
          Marker kiel = map.addMarker(new MarkerOptions()
                  .position(KIEL)
                  .title("Kiel")
                  .snippet("Kiel is cool")
                  .icon(BitmapDescriptorFactory
                          .fromResource(R.drawable.ic_launcher)));
  
          // Move the camera instantly to hamburg with a zoom of 15.
          map.moveCamera(CameraUpdateFactory.newLatLngZoom(HAMBURG, 15));
  
          // Zoom in, animating the camera.
          map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);
  </code></pre>
  
  <p>And it still returns a null pointer value</p>