android – 如何在Fragment中使用SupportMapFragment?
作者:互联网
我知道使用嵌套片段存在问题.但我的应用程序设计为在片段上运行,如果我将使用地图的活动,我的投射功能将有错误.
我想请教您如何实现这一目标.我一直在网上搜索,但我找不到最佳解决方案.
我试过这段代码:
private void setUpMapIfNeeded() {
// Do a null check to confirm that we have not already instantiated the map.
if (mMap == null) {
// Try to obtain the map from the SupportMapFragment.
mMap = ((SupportMapFragment) myFragmentActivity.getSupportFragmentManager().findFragmentById(R.id.map_con))
.getMap();
// Check if we were successful in obtaining the map.
if (mMap != null) {
mMap.setMyLocationEnabled(true);
}
}
}
由于R.id.map_con是我片段中的一个片段,这会给我重复的错误.
所以我寻找一个解决方法,这次,R.id.map_con是一个框架布局,在运行时我创建了SupportMapFragment.
SupportMapFragment mSupportMapFragment = new SupportMapFragment();
myFragmentActivity.getSupportFragmentManager().beginTransaction()
.replace(R.id.map_con, mSupportMapFragment).commit();
虽然每次关闭并打开片段时这不会给我重复.但我的错误是mSupportMapFragment.getMap总是为空.我不明白为什么它的null?
mMap = mSupportMapFragment.newInstance().getMap();
if (mMap != null){
Log.e("ReportFragment","mMap is not empty");
}else{
Log.e("ReportFragment","mMap is empty");
}
我真的很感激你们的任何意见,或者你们还有另外的工作,但仍然在这个过程中,即片段里面的片段
谢谢
chkm8
解决方法:
不推荐使用getMap()
片段中的代码应该是这样的:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_location, container, false);
mMapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map);
mMapFragment.getMapAsync(this);
return v;
}
标签:android,google-maps,supportmapfragment 来源: https://codeday.me/bug/20191004/1853428.html