[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() // 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();