Android 另一个片段中的映射片段导致活动崩溃

Android 另一个片段中的映射片段导致活动崩溃,android,google-maps,android-fragments,Android,Google Maps,Android Fragments,我使用的是一个选项卡式活动,在第一个片段中我使用的是map fragment。它工作正常,但问题是如果我在这个活动中的其他片段之间切换,整个活动就会崩溃。删除映射片段后,代码运行良好。但是我想在片段中放置一个映射,因此请提供帮助。这是我的映射片段xml代码 <fragment xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/

我使用的是一个选项卡式活动,在第一个片段中我使用的是map fragment。它工作正常,但问题是如果我在这个活动中的其他片段之间切换,整个活动就会崩溃。删除映射片段后,代码运行良好。但是我想在片段中放置一个映射,因此请提供帮助。这是我的映射片段xml代码

     <fragment xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="350dp"
    android:layout_height="200dp"
    android:layout_marginTop="20dp"
    android:id="@+id/map"
    android:layout_below="@+id/textView6"
    android:layout_alignParentLeft="true"
    android:name="com.google.android.gms.maps.SupportMapFragment"
    android:layout_alignParentStart="true"
    android:layout_marginLeft="19dp"
    android:layout_marginStart="19dp" 
这是我的片段代码

   @Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
        mapFragment = ((SupportMapFragment) getChildFragmentManager()
                .findFragmentById(R.id.map));
      mapFragment.getMapAsync(this);
}


@Override
public void onDestroy() {
    super.onDestroy();
    if (mapFragment != null) {
        //mMap = null;
        mapFragment=null;
        }
    }

@Override
public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;
    //Toast.makeText(getActivity(), lat + "   " + lng, Toast.LENGTH_LONG).show();

    LatLng locations = new LatLng(Util.reslatitude,Util.reslogitide);

    if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

        return;
    }
    mMap.setMyLocationEnabled(true);
    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(locations, 13));

    mMap.addMarker(new MarkerOptions()
            .title("abc")

            .position(locations));
}

提前感谢您

不要在第一个片段中使用map fragment。

不要在创建的活动中初始化mapFragment在创建视图中初始化它

      @Override
      public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

          mapFragment = ((SupportMapFragment) getChildFragmentManager()
                    .findFragmentById(R.id.map));
          mapFragment.getMapAsync(this);
      }
您的
onActivityCreated
应该是

   @Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
}
添加以下代码,让我知道它是否有效

   @Override
   public void onPause() {
        super.onPause();

        getChildFragmentManager().beginTransaction()
                .remove(mapFragment)
                .commit();
    }

你能发布你的logcat输出吗?请使用android:classshare分享你的片段代码,其中有地图你是如何启动片段的?我的意思是你是替换了还是添加了。我建议您像下面这样启动您的片段getSupportFragmentManager().beginTransaction().replace(R.id.container,new MapFragment(),“MapFragment”).commit();
   @Override
   public void onPause() {
        super.onPause();

        getChildFragmentManager().beginTransaction()
                .remove(mapFragment)
                .commit();
    }