gpt4 book ai didi

android - 在 fragment 内调用的谷歌地图返回 null

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:58:17 24 4
gpt4 key购买 nike

我正在尝试将 Map 放入 fragment 中。我正在粘贴我正在使用的代码

XML

           <fragment
android:id="@+id/contactFrag_F_map"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="200dp"/>

下面是我声明的 fragment 名称

public class ContactFragment extends MapFragment 

下面是我初始化 map 的方式

private void initilizeMap() {
if (googleMap == null) {

if (googleMap == null) {
googleMap = ((MapFragment) getActivity().getFragmentManager().findFragmentById(
R.id.contactFrag_F_map)).getMap();
}
// check if map is created successfully or not
if (googleMap == null) {
Toast.makeText(getActivity(),
"Sorry! unable to create maps", Toast.LENGTH_SHORT)
.show();
}
}
}

并且此方法在 onCreateView 上调用

错误是

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.android.gms.maps.GoogleMap com.google.android.gms.maps.MapFragment.getMap()' on a null object reference

请帮忙解决这个问题。问题在以下部分

if (googleMap == null) {
googleMap = ((MapFragment) getActivity().getFragmentManager().findFragmentById(
R.id.contactFrag_F_map)).getMap();
}

编辑 1

将xml更改为

<fragment
android:id="@+id/contactFrag_F_map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="200dp"/>

public class ContactFragment extends SupportMapFragment

和初始化

if (googleMap == null) {
googleMap = ((SupportMapFragment) getActivity().getSupportFragmentManager().findFragmentById(
R.id.contactFrag_F_map)).getMap();
}

但是还是报错了

java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.android.gms.maps.GoogleMap com.google.android.gms.maps.SupportMapFragment.getMap()' on a null object reference

它发生在行中

if (googleMap == null) {
googleMap = ((SupportMapFragment) getActivity().getSupportFragmentManager().findFragmentById(
R.id.contactFrag_F_map)).getMap();
}

为什么会这样??

编辑 2

是的.. getmap 已弃用。所以我尝试了

MapFragment mapFragment = (MapFragment) getChildFragmentManager().findFragmentById(R.id.contactFrag_F_map);
mapFragment.getMapAsync(this);

和..

public class ContactFragment extends MapFragment implements OnMapReadyCallback { 

和回调..

@Override
public void onMapReady(GoogleMap googleMap) {

theGoogleMap = googleMap;

setUpMap();
}

和 setUpMap 方法

public void setUpMap(){

theGoogleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
theGoogleMap.setMyLocationEnabled(true);
theGoogleMap.setTrafficEnabled(true);
theGoogleMap.setIndoorEnabled(true);
theGoogleMap.setBuildingsEnabled(true);
theGoogleMap.getUiSettings().setZoomControlsEnabled(true);
}

并且错误显示在 onresume() 中

java.lang.RuntimeException: Unable to resume activity {com.purpletab.daga/com.purpletab.daga.activities.CoreActivity}: java.lang.NullPointerException: Attempt to invoke interface method 'void com.google.maps.api.android.lib6.e.fl.o()' on a null object reference

还有

Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'void com.google.maps.api.android.lib6.e.fl.o()' on a null object reference

最佳答案

解决方案。我在 fragment 中放置了一个 map fragment

所以....

要放置在 fragment 中的 xml 是

 <fragment
android:id="@+id/contactFrag_F_map"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="200dp"/>

和..

public class ContactFragment extends Fragment implements OnMapReadyCallback {

onCreateView()

MapFragment mapFragment = (MapFragment) getChildFragmentManager().findFragmentById(R.id.contactFrag_F_map);
mapFragment.getMapAsync(this);

在 OnMapReadyCallback 上

@Override
public void onMapReady(GoogleMap googleMap) {

theGoogleMap = googleMap;

setUpMap();
}

下面是setUpMap。

public void setUpMap(){

theGoogleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
theGoogleMap.setMyLocationEnabled(true);
theGoogleMap.setTrafficEnabled(true);
theGoogleMap.setIndoorEnabled(true);
theGoogleMap.setBuildingsEnabled(true);
theGoogleMap.getUiSettings().setZoomControlsEnabled(true);
}

工作正常..:)

关于android - 在 fragment 内调用的谷歌地图返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36881169/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com