【发布时间】:2017-04-07 14:48:10
【问题描述】:
我有一个 FragmentActivity,我正在尝试加载谷歌地图。它实现了 OnMapReadyCallBack,当我尝试给地图充气时,我得到了 mapFragment 对象,但是在调用 getMapAsync 后应用程序崩溃了。以下是我的代码:
public class MapActivity extends FragmentActivity implements OnMapReadyCallback {
private GoogleMap googleMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
initializeMap();
}
private void initializeMap() {
if (googleMap == null) {
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
if(mapFragment!=null){
mapFragment.getMapAsync(MapActivity.this);
}
// check if map is created successfully or not
if (null== googleMap) {
Toast.makeText(getApplicationContext(), "Sorry! unable to create maps", Toast.LENGTH_SHORT).show();
}
}
}
@Override
public void onMapReady(GoogleMap map) {
googleMap = map;
googleMap.setMyLocationEnabled(true);
}
}
我尝试调试,我注意到我正在获取 mapFragment 对象,但它从未到达 onMapReady 方法,这使我的 googleMap 对象为空,并且当任何与 googleMap 相关的方法(例如 setOnCameraChangeListener)被调用时应用程序崩溃。我已经通过了documentation page,但它似乎在我的项目中不起作用。
我的项目中可能缺少什么吗?我应该如何克服这个错误并阻止应用程序崩溃。
TIA
编辑 1:
以下是我在 xml 文件中的地图片段
<fragment
android:id="@+id/map"
class="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MapsActivity"
android:name="com.google.android.gms.maps.SupportMapFragment"/>
【问题讨论】:
-
你能展示你的 R.layout.activity_map 吗?
-
检查我在问题中的编辑。
标签: android google-maps android-studio nullpointerexception supportmapfragment