getsupportfragmentmanager (). findfragmentbyid (r.id.map) возвращает нулевую карту Google - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь использовать функциональность карты 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

enter image description here

Я много искал в StackOverflow, но ни одно из решений не подходит для моего случая

Может кто-нибудь помочь мне с этим ?

1 Ответ

1 голос
/ 06 апреля 2020

вам нужно позвонить:

// add this (supplying the layout for your activity)
setContentView(R.layout.activity); 

после вашего звонка на super.onCreate(savedInstanceState);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...