首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除MapFragment

删除MapFragment
EN

Stack Overflow用户
提问于 2014-01-14 20:30:43
回答 3查看 4.9K关注 0票数 2

我的应用程序中有一个MapFragment和常规的片段。问题是当我在片段之间切换时,MapFragment在后台。我有代码来查找MapFragment是否在那里,但我需要代码来删除它。

代码:

代码语言:javascript
复制
FragmentMapView mapFragmentcheck = (FragmentMapView)getFragmentManager().findFragmentByTag("map");
if (mapFragmentcheck != null) {
    Log.d("tag","max exists");
    if (mapFragmentcheck.isVisible()) {
        Log.d("tag","map is visble, remove it");    
         // Do remove here, but how?
    }
}
else {
    Log.d("tag","map does not exists");
}
EN

回答 3

Stack Overflow用户

发布于 2014-12-13 17:52:25

尝尝这个

代码语言:javascript
复制
@Override
public void onDestroyView() {
	super.onDestroyView();
	MapFragment mapFragment = (MapFragment) getActivity()
			.getFragmentManager().findFragmentById(R.id.map_add_place);
	if (mapFragment != null)
		getActivity().getFragmentManager().beginTransaction()
				.remove(mapFragment).commit();
}

票数 5
EN

Stack Overflow用户

发布于 2014-01-14 20:32:32

代码为:

代码语言:javascript
复制
getFragmentManager().beginTransaction().remove(mapFragmentcheck).commit();

请务必阅读FragmentTransaction上的文档,以便更多地了解如何更改片段。

票数 2
EN

Stack Overflow用户

发布于 2015-12-18 10:33:22

这对我很有效

我是这样添加谷歌地图的

代码语言:javascript
复制
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.home_fragment, container, false);
    Bundle bdl = getArguments();

    // setuping locatiomanager to perfrom location related operations
    locationManager = (LocationManager) getActivity().getSystemService(
            Context.LOCATION_SERVICE);

    // Requesting locationmanager for location updates
    locationManager.requestLocationUpdates(
            LocationManager.NETWORK_PROVIDER, 1, 1, this);

    // To get map from MapFragment from layout
    googleMap = ((MapFragment) getActivity().getFragmentManager()
            .findFragmentById(R.id.map)).getMap();

    // To change the map type to Satellite
    // googleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);

    // To show our current location in the map with dot
    // googleMap.setMyLocationEnabled(true);

    // To listen action whenever we click on the map
    googleMap.setOnMapClickListener(new OnMapClickListener() {

        @Override
        public void onMapClick(LatLng latLng) {
            /*
             * LatLng:Class will give us selected position lattigude and
             * longitude values
             */
            Toast.makeText(getActivity(), latLng.toString(),
                    Toast.LENGTH_LONG).show();
        }
    });

    changeMapMode(3);

    // googleMap.setSatellite(true);
    googleMap.setTrafficEnabled(true);
    googleMap.setBuildingsEnabled(true);
    googleMap.setMyLocationEnabled(true);

    return v;
}

我的xml地图如下所示

代码语言:javascript
复制
   <fragment
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.MapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:tag="ScrewMaps" />

我像这样分离碎片:

代码语言:javascript
复制
@Override
    public void onDestroyView() {
        // TODO Auto-generated method stub
        super.onDestroyView();

        locationManager.removeUpdates(this);

        android.app.Fragment fragment = getActivity().getFragmentManager()
                .findFragmentById(R.id.map);
        if (null != fragment) {
            android.app.FragmentTransaction ft = getActivity()
                    .getFragmentManager().beginTransaction();
            ft.remove(fragment);
            ft.commit();
        }
    }

请注意,我的MapView片段是android.app.Fragment &我正在使用getFragmentManager()添加和删除MapViewFragment。如果您将V4.Fragment操作与app.Fragment混合在一起,那么您的应用程序将严重崩溃

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21113629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档