首页 > 解决方案 > getsupportfragmentmanager().findfragmentbyid(r.id.map) 返回 null 谷歌地图

问题描述

我尝试在我的 MainActivity 上使用谷歌地图功能我有这个空指针返回:getsupportfragmentmanager().findfragmentbyid(r.id.map); ==> 返回空值

SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.mapApi);

mapfragment 将为空,当我使用 getMapAsync(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>

MainActivity 内的 onCreate :

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 中搜索了很多,但没有一个解决方案对我的情况有效

有人可以帮我弄这个吗?

标签: javaandroidgoogle-maps

解决方案


你需要打电话:

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

在您致电后super.onCreate(savedInstanceState);


推荐阅读