我收到此错误:
引起:java.lang.NullPointerException:尝试调用虚拟 方法'无效 com.google.android.gms.maps.SupportMapFragment.getMapAsync(com.google.android.gms.maps.OnMapReadyCallback)” 在空对象引用上
因为 mapHotelFragment 始终保持 null ,即使片段存在于布局中也是如此。为什么会这样?
这是否可行,因为如果是,我的活动会延伸AppCompatActivity
而不是FragmentActivity
,那么我如何在GMaps
中实施AppCompatActivity
public class CheckinActivity extends AppCompatActivity implements OnMapReadyCallback {
…
SupportMapFragment mapHotelFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.hotel);
mapHotelFragment.getMapAsync(this);
…
@Override
public void onMapReady(GoogleMap googleMap) {
mapEventLocation = googleMap;...
}
…
<LinearLayout
android:id="@+id/hotelMap"
android:layout_width="match_parent"
android:layout_height="@dimen/tile_height"
android:orientation="vertical">
<fragment
android:id="@+id/hotel"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/hotelLabel" />
</LinearLayout>
</RelativeLayout>
答案 0 :(得分:0)
因为您在xml中使用了MapFragment
并尝试在java中获取SupportMapFragment
。
因此,如果您想使用MapFragment
,请替换
SupportMapFragment mapHotelFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.hotel);
与
MapFragment mapHotelFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.hotel);
或者如果您想使用SupportMapFragment
,请更改
<fragment
android:id="@+id/hotel"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/hotelLabel" />
到这个
<fragment
android:id="@+id/hotel"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/hotelLabel" />