我有一个FragmentActivity,我想在其中使用一个地图片段。我有一个问题,让支持片段管理器访问它。

 if (googleMap == null) {
            googleMap = ((SupportMapFragment) getSupportFragmentManager()
                    .findFragmentById(R.id.map1)).getMap();

            // check if map is created successfully or not
            if (googleMap == null) {
                Toast.makeText(getApplicationContext(),
                        "Sorry! unable to create maps", Toast.LENGTH_SHORT)
                        .show();
            }
        }

            // create marker
            MarkerOptions marker = new MarkerOptions().position(
                    new LatLng(latitude, longitude)).title("Hello Maps ");

            CameraPosition cameraPosition = new CameraPosition.Builder()
                    .target(new LatLng(latitude, longitude)).zoom(15).build();

            googleMap.animateCamera(CameraUpdateFactory
                    .newCameraPosition(cameraPosition));

            // adding marker
            googleMap.addMarker(marker);

当前回答

((AppCompatActivity) getActivity()).getSupportFragmentManager()

其他回答

您可以直接拨打

getParentFragmentManager()  

获取片段管理器。注意,getFragmentManager()也可以工作,但已被标记为已弃用。

我的父活动扩展了AppCompatActivity,所以我不得不将我的上下文转换为AppCompatActivity而不仅仅是Activity。

eg.

FragmentAddProduct fragmentAddProduct = FragmentAddProduct.newInstance();
FragmentTransaction fragmentTransaction = ((AppCompatActivity)mcontext).getSupportFragmentManager().beginTransaction();

getFragmentManager()已被弃用,取而代之的是getParentFragmentManager(),以清楚地表明您希望访问父片段的片段管理器,而不是任何子片段。

简单地使用Java中的getParentFragmentManager()或Kotlin中的parentFragmentManager。

在你的片段中这样做吗

getActivity().getSupportFragmentManager()

简单的新方法做它在kotlin

requireActivity().supportFragmentManager