我只是想让我的 map fragment 能够执行 getmapasync 并在其上绘制标记。但是我的 mapFragment 值始终为空。我不明白为什么。我从其他答案中了解到,这可能与我的 fragment 在框架内并因此是某种 child 这一事实有关。
这是我的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
startService(new Intent(MainActivity.this, TrackerService.class));
bindService(new Intent(MainActivity.this, TrackerService.class), myConnection, Context.BIND_AUTO_CREATE);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
Log.d("DEBUG", "MAP READY");
mMap = googleMap;
drawLocationMarkers();
}
还有 XML:
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="7dp"
android:background="@drawable/custom_card"
android:layout_weight="0.5">
<fragment
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/map"
class="com.google.android.gms.maps.MapFragment"/>
</FrameLayout>
最佳答案
您需要更改布局以使用 SupportMapFragment
而不是 MapFragment
android:name="com.google.android.gms.maps.SupportMapFragment"
关于android - getSupportFragmentManager().findFragmentById 在 GoogleMap 上返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41282420/