Obtendo java.lang.NullPointerException em MapFragment

Estou usando o GoogleMaps no meu aplicativo. Para esse fim, implementei o SupportMapFragment Map-v2 na minha classe Fragment personalizada. Mas, infelizmente, estou recebendo NullPointerException por nenhuma razão nas linhas

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

Eu realmente não sei o que fazer e estou completamente desamparado. Eu até encaminhei algumas perguntas semelhantes delink 1, link 2 elink 3. Mas nada parece dar certo. Por favor, me ajude com isso. Encontre o meu erro de logcat e complete o código da seguinte maneira.

MapFragment.java

public class MapFragment extends Fragment implements GoogleMap.OnMarkerClickListener {

    GoogleMap googleMap;    
    private Map<Marker, Integer> markerPosition = new HashMap ();
    private ImageView imgUser;
    private TextView txtName, txtLocation,txtCount;
    private ArrayList<Info> mList;

    public static MapFragment newInstance() {
        MapFragment fragment = new MapFragment();
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_map, container, false);
        findViews (view);
        googleMapsData ();
        return view;
    }



    @Override
    public void onViewCreated (View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated (view, savedInstanceState);
        mList = getHelper ().getList ();
        counts ();
    }

    private void googleMapsData () {
        int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable (getActivity ());
        if(status!= Connectio,nResult.SUCCESS){ 

            int requestCode = 10;
            Dialog dialog = GooglePlayServicesUtil.getErrorDialog(status, getActivity (), requestCode);
            dialog.show();

        }else { 

            SupportMapFragment fm = ((SupportMapFragment) getActivity ().getSupportFragmentManager ().findFragmentById (R.id.map)); //This is the line getting error
            googleMap = fm.getMap(); //This is the line getting error
            googleMap.setMapType (GoogleMap.MAP_TYPE_NORMAL);
            googleMap.setOnMarkerClickListener(this);
            googleMap.setMyLocationEnabled(true);

                for(int i=0;i<mList.size ();i++){
                    drawMarker (new LatLng (Double.parseDouble (mList.get (i).getLatitude ()), Double.parseDouble (mList.get (i).getLongitude ())),i);
                }

            CameraPosition cameraPosition = new CameraPosition.Builder()
                    .target (new LatLng (Double.parseDouble ("13.0900"), Double.parseDouble ("80.2700")))
                    .zoom (7)                              
                    .build ();                   


            googleMap.animateCamera(CameraUpdateFactory.newCameraPosition (cameraPosition), new GoogleMap.CancelableCallback () {

                @Override
                public void onFinish() {
                    CameraUpdate cu_scroll = CameraUpdateFactory.scrollBy(-300, 70);
                    googleMap.animateCamera(cu_scroll);
                }

                @Override
                public void onCancel() {
                }
            });
        }

        googleMap.setOnMapClickListener(new OnMapClickListener () {
            @Override
            public void onMapClick(LatLng point) {
            }
        });


        googleMap.setOnMapLongClickListener(new OnMapLongClickListener () {
            @Override
            public void onMapLongClick(LatLng point) {
            }
        });
    }


    public void details(Info Info){
        cardBottomdetails.setVisibility (View.VISIBLE);
        txtName.setText (Info.getHotelName ());
        txtLocation.setText (Info.getCity ());
        Glide.with (getActivity ())
                .load(Constant.BASE_IP+Info.getImage ())
                .centerCrop()
                .placeholder(getResources ().getDrawable (R.drawable.img))
                .crossFade()
                .into(imgUser);

    }

    public void counts(){
        txtCount.setText (""+mList.size ());
        if(Build.VERSION.SDK_INT >= 16) {
            txtCount.setBackground (Util.drawCircle (getActivity (), 25, 25, getResources ().getColor (R.color.yellow)));
        }else{
            txtCount.setBackgroundDrawable (Util.drawCircle (getActivity (), 25, 25, getResources ().getColor (R.color.yellow)));
        }
    }

    private void drawMarker(LatLng point , int index){
        MarkerOptions markerOptions = new MarkerOptions();
        markerOptions.position (point);
        Marker marker = googleMap.addMarker(markerOptions);
        markerPosition.put (marker,index);
    }

    public void findViews(View view){
        imgUser = (ImageView)view.findViewById (R.id.img_user);
        txtName = (TextView)view.findViewById (R.id.txt_name);
        txtLocation = (TextView)view.findViewById (R.id.txt_location);
        txtCount = (TextView)view.findViewById (R.id.txt_count);
    }


    @Override
    public boolean onMarkerClick (Marker marker) {
        int index = markerPosition.get (marker);
        details (mList.get (index));
        return false;
    }

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

fragment_map.xml

 <FrameLayout 
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <fragment
            android:id="@+id/map"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            class="com.google.android.gms.maps.SupportMapFragment"/>

</FrameLayout>

Erro de logcat:

java.lang.NullPointerException
            at com.example.map.fragment.MapFragment.googleMapsData(MapFragment.java:105)
            at com.example.map.fragment.MapFragment.onCreateView(MapFragment.java:68)
            at android.support.v4.app.Fragment.performCreateView(Fragment.java:1789)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:955)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138)
            at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:740)
            at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1501)
            at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:458)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:146)
            at android.app.ActivityThread.main(ActivityThread.java:5602)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
            at dalvik.system.NativeStart.main(Native Method)

Nota :

1) eu importeiimport android.support.v4.app.Fragment; no meu código

2) O código estava funcionando bem quando eu usei isso noActivity. O problema ocorre apenas quando mudo deActivity paraFragment.

Desde já, obrigado. Todas as suas soluções seriam mais úteis e valiosas para resolver meu problema.

questionAnswers(1)

yourAnswerToTheQuestion