Я пытаюсь использовать функциональность карты Google для своей функции MainActivity. Этот нулевой указатель возвращается: getsupportfragmentmanager (). Findfragmentbyid (r.id.map); ==> return null
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.mapApi);
mapfragment будет нулевым, и когда я вызову его с помощью getMapAsyn c (this); приложение закрывается до его запуска
mapFragment.getMapAsync(this); // null pointer variable call getMapAsync
content_main. xml
<LinearLayout
android:layout_width="match_parent"
android:layout_height="216dp"
android:orientation="horizontal">
<fragment
android:id="@+id/mapApi"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent">
</fragment>
</LinearLayout>
onСоздание внутри MainActivity:
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener , OnMapReadyCallback {
private GoogleMap map;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main); didn't work
setContentView(R.layout.content_main); // worked, now i haven't null pointer
System.out.println("************************ mapApi:"+R.id.mapApi);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.mapApi);
System.out.println("************************ mapFragment:"+mapFragment);
if (mapFragment != null) {
mapFragment.getMapAsync(this);
}
}
@Override
public void onMapReady(GoogleMap googleMap) {
map = googleMap;
LatLng BordjMenaielGare = new LatLng(36.753162, 3.717716);
LatLng Blida = new LatLng(36.769038, 3.057451);
map.addMarker(new MarkerOptions().position(BordjMenaielGare).title("Gare Bordj Menaiel "));
map.addMarker(new MarkerOptions().position(Blida).title("Gare Agha"));
map.moveCamera(CameraUpdateFactory.newLatLngZoom(BordjMenaielGare, 10));
}
}
вот файлы:
фрагмент карты находится на content_main. xml, я включил его в app_bar_main. xml, а app_bar_main включил в activity_main. xml и я вызываю карту из MainActivity
Я много искал в StackOverflow, но ни одно из решений не подходит для моего случая
Может кто-нибудь помочь мне с этим ?