1
J'ai un problème lors de l'initialisation de ma carte. Le fragment de carte est gonflé dans le FrameLayout de l'activité principale. Je continue d'obtenir une exception de pointeur null dans la méthode setUpMapIfNeeded().Initialisation de la carte dans le fragment
activity_main.xml
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
`
<include layout="@layout/toolbar"/>
<FrameLayout
android:id="@+id/frameLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"></FrameLayout>
</LinearLayout>
<android.support.design.widget.NavigationView
android:id="@+id/navigation_view"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:layout_gravity="start"
app:headerLayout="@layout/header"
app:menu="@menu/drawer"
/>
</android.support.v4.widget.DrawerLayout>
map_fragment.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/map"
tools:context=".MapFragment"
android:name="com.google.android.gms.maps.SupportMapFragment"/>
</LinearLayout>
MainActivity.java
switch (menuItem.getItemId()) {
case R.id.shop:
MapFragment mapFragment = new MapFragment();
android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.frameLayout,mapFragment);
fragmentTransaction.commit();
break;
case R.id.list:
ListFragment listFragment = new ListFragment();
android.support.v4.app.FragmentTransaction fragmentTransaction1 = getSupportFragmentManager().beginTransaction();
fragmentTransaction1.replace(R.id.frameLayout,listFragment);
fragmentTransaction1.commit();
break;
case R.id.points:
Toast.makeText(getApplicationContext(),"Global card selected",Toast.LENGTH_SHORT).show();
break;
}
return true;
}
});
MapFragment.java
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.map_fragment,container,false);
//Check if GPS is enabled
locationManager = (LocationManager)getActivity().getSystemService(Context.LOCATION_SERVICE);
if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
Toast.makeText(getContext(),"GPS enabled",Toast.LENGTH_SHORT).show();
}else {
showGPSDisabledAlertToUser();
}
setUpMapIfNeeded();
return view;
}
private void setUpMapIfNeeded() {
// Do a null check to confirm that we have not already instantiated the map.
if (mMap == null) {
// Try to obtain the map from the SupportMapFragment.
//I get a null pointer exception at this point, no map it gotten
mMap = ((SupportMapFragment)getActivity().getSupportFragmentManager().findFragmentById(R.id.map))
.getMap();
// Check if we were successful in obtaining the map.
if (mMap != null) {
setUpMap();
}
}
}
Prenez oeil à mon repo pour 'mapTab' [ici] (https://github.com/jbj88817/MapTab-android). Il montre comment initialiser la carte google dans le 'fragment'. – bjiang
Merci @bjiang. Votre repo a aidé. – Evo