其他分享
首页 > 其他分享> > android – 如何在Fragment中使用SupportMapFragment?

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