1

I would like to load the layout from the xml file, I tried:

View view = inflater.inflate(R.layout.map_cameras_fragment, container, false);  

but it just shows this:

java.lang.NullPointerException at maps.z.r.onResume(Unknown Source)...

Here is my whole code (I'm using android maps extensions):

public class MapCamerasFragment extends SupportMapFragment {

private GoogleMap mMap = null;

@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.map_cameras_fragment, container, false);  
    SupportMapFragment myFrag = (SupportMapFragment) getFragmentManager().findFragmentById(R.id.mapChooseCameras);
    mMap = myFrag.getExtendedMap();

    MarkerGenerator.addMarkersInWorld(mMap);
    mMap.setClustering(new ClusteringSettings().iconDataProvider(new DemoIconProvider(getResources())).addMarkersDynamically(true));

    return view;
}
}

What am I doing wrong?

LOGCAT:

E/AndroidRuntime(3673): FATAL EXCEPTION: main
E/AndroidRuntime(3673): java.lang.NullPointerException
at maps.z.r.onResume(Unknown Source)
at com.google.android.gms.maps.internal.IMapFragmentDelegate$Stub.onTransact(IMapFragmentDelegate.java:115)
at android.os.Binder.transact(Binder.java:297)
at com.google.android.gms.maps.internal.IMapFragmentDelegate$a$a.onResume(Unknown Source)
at com.google.android.gms.maps.SupportMapFragment$a.onResume(Unknown Source)
at com.google.android.gms.internal.e$1.a(Unknown Source)
at com.google.android.gms.internal.e.a(Unknown Source)
at com.google.android.gms.internal.e.onResume(Unknown Source)
at com.google.android.gms.maps.SupportMapFragment.onResume(Unknown Source)
at android.support.v4.app.Fragment.performResume(Fragment.java:1503)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947)
at android.support.v4.app.FragmentManagerImpl.performPendingDeferredStart(FragmentManager.java:807)
at android.support.v4.app.FragmentManagerImpl.startPendingDeferredFragments(FragmentManager.java:1112)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1461)
at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:461)
at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1012)
at android.support.v4.view.ViewPager.populate(ViewPager.java:881)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1366)
at android.view.View.measure(View.java:12723)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:812)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:553)
at android.view.View.measure(View.java:12723)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
at android.view.View.measure(View.java:12723)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:812)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:553)
at android.view.View.measure(View.java:12723)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2092)
at android.view.View.measure(View.java:12723)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1064)
at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)

map_cameras_fragment.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <fragment
        android:id="@+id/mapChooseCameras"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        class="pl.mg6.android.maps.extensions.SupportMapFragment"/>
      <Button android:id="@+id/googlemaps_select_location"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:text="Select"/>
</RelativeLayout>

UPDATE 1:

I have been trying this

  ...
  View view = inflater.inflate(R.layout.map_cameras_fragment, container, false);       
  super.onCreateView(inflater, container, savedInstanceState);
  mMap = super.getExtendedMap();
  MarkerGenerator.addMarkersInWorld(mMap);
  mMap.setClustering(new ClusteringSettings().iconDataProvider(new DemoIconProvider(getResources())).addMarkersDynamically(true));  
  return view;
  ...

There is no exception but markers are not visible. It seems that there are two views... Do you know how to fix it?

MaciejGórski
  • 22,187
  • 7
  • 70
  • 94
Krivers
  • 1,986
  • 2
  • 22
  • 45

2 Answers2

1

I had this same problem. I changed my fragment to extend Fragment instead of SupportMapFragment.

1

You cannot both extend SupportMapFragment and include SupportMapFragment inside your fragment. Well, you can... but does that make sense?

You also should not add fragment to fragment from xml. The only way it works is creating child fragment in code and use getChildFragmentManager() to get FragmentManager to add SupportMapFragment to your fragment.

Try this code: SupportMapFragment inside fragment.

MaciejGórski
  • 22,187
  • 7
  • 70
  • 94