[android] 프래그먼트에서 getSupportFragmentManager ()에 어떻게 액세스 할 수 있습니까?

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);



답변

직접 전화 할 수 있습니다

getFragmentManager() 

조각 관리자를 얻을 수 있습니다.

또는

조각에서

필드 만들기 :

private FragmentActivity myContext;

프래그먼트의 onAttach 메소드를 재정의하십시오.

@Override
public void onAttach(Activity activity) {
    myContext=(FragmentActivity) activity;
    super.onAttach(activity);
}

Support fragment manager call을 받아야 할 경우 :

FragmentManager fragManager = myContext.getSupportFragmentManager(); //If using fragments from support v4

또는

FragmentManager fragManager = myContext.getFragmentManager();

끝났습니다.


답변

당신이해야 할 모든 사용

getFragmentManager()

당신의 조각에 방법. 이 프래그먼트를 추가하는 동안 사용했을 때 지원 프래그먼트 관리자를 제공합니다.

조각 문서


답변

간단히 다음과 같이하십시오-

getFragmentManager() // This will also give you the SupportFragmentManager or FragmentManager based on which Fragment class you have extended - android.support.v4.app.Fragment OR android.app.Fragment.

또는

getActivity().getSupportFragmentManager();

Fragment의 onActivityCreated () 메소드와 onActivityCreated () 이후에 호출되는 모든 메소드에서.


답변

Kotlin 사용자는이 답변을 시도

(activity as AppCompatActivity).supportFragmentManager


답변

이 문제가 있고 API 레벨 21 이상인 경우 다음을 수행하십시오.

   map = ((SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map))
                    .getMap();

이것은 조각 내부에서 사용될 때 맵을 얻습니다.


답변

getActivity().getSupportFragmentManager()언제든지 SupportFragmentManager를 가져 오려면 사용할 수 있습니다.

계층은 활동-> 조각입니다. 프래그먼트는 getSupportFragmentManger를 직접 호출 할 수 없지만 Activity는 할 수 있습니다. 따라서 getActivity를 사용하여 프래그먼트가있는 현재 활동을 호출하고 getgetSupportFragmentManager()


답변

부모 활동은 AppCompatActivity를 확장하므로 컨텍스트 대신 Activity 대신 AppCompatActivity로 컨텍스트를 캐스트해야했습니다.

예.

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