fragment에서 getSupportFragmentManager()에 액세스하려면 어떻게 해야 합니까?
프래그먼트 활동이 있는데 그 안에 지도 프래그먼트를 사용하려고 합니다.지원 조각 관리자를 액세스하는 데 문제가 있습니다.
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);
직접 전화하실 수 있습니다.
getParentFragmentManager()
조각 관리자를 불러옵니다.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.
OR
getActivity().getSupportFragmentManager();
Fragment's onActivityCreated() 메서드 및 onActivityCreated() 이후에 호출되는 모든 메서드에서 사용됩니다.
코틀린 사용자는 이 대답을 시도합니다.
(activity as AppCompatActivity).supportFragmentManager
이 문제가 있고 api 레벨 21 이상인 경우 다음을 수행합니다.
map = ((SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map))
.getMap();
이것은 파편 내부에서 사용될 때 지도를 얻을 것입니다.
Java에서 대체할 수 있습니다.
getChildFragmentManager()
코틀린어로,
childFragmentManager
코틀린에서 그것을 하는 간단하고 새로운 방법.
requireActivity().supportFragmentManager
getFragmentManager()
을 위해 더 이상 사용되지 않습니다.getParentFragmentManager()
하위 조각 대신 상위 조각 관리자에 액세스할 수 있습니다.
간단히 사용getParentFragmentManager()
자바 또는parentFragmentManager
코틀린에서
부모 활동은 AppCompativity를 확장하기 때문에 단순히 활동이 아닌 AppCompativity에 컨텍스트를 캐스팅해야 했습니다.
예를 들면
FragmentAddProduct fragmentAddProduct = FragmentAddProduct.newInstance();
FragmentTransaction fragmentTransaction = ((AppCompatActivity)mcontext).getSupportFragmentManager().beginTransaction();
사용할 수 있습니다.getActivity().getSupportFragmentManager()
언제든지 SupportFragment Manager를 다운로드할 수 있습니다.
계층 구조는 Activity -> fragment입니다. fragment는 getSupportFragmentManager를 직접 호출할 수 없지만 Activity는 호출할 수 있습니다.따라서 getActivity를 사용하여 fragment가 있는 현재 활동을 호출하고 다음을 얻을 수 있습니다.getSupportFragmentManager()
((AppCompatActivity) getActivity()).getSupportFragmentManager()
당신의 단편에서 이것을 하라.
getActivity().getSupportFragmentManager()
getActivity().getFragmentManager()
이게 먹히든 내가 먹히든.
활동에서 조각 관리자를 사용하는 경우
getSupportFragmentManager()
supportFragmentManager
프래그먼트에서 프래그먼트 관리자를 사용하는 경우
childFragmentManager
다음 코드는 나에게 유용합니다.
SupportMapFragment mapFragment = ((SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map));
mapFragment.getMapAsync(this);
fragments 내에서 childFragmentManager를 사용할 수 있습니다.
다음과 같이 간단하게 액세스할 수 있습니다.
Context mContext;
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
mContext = getActivity();
}
그런 다음 사용합니다.
FragmentManager fm = ((FragmentActivity) mContext)
.getSupportFragmentManager();
일부 Kotlin 코드는 fragment 내에서 supportFragmentManager를 사용합니다.
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
super.onCreateView(inflater, container, savedInstanceState)
val rootView = inflater.inflate(R.layout.fragment_home, container, false)
// ....
if (rootView.home_play_btn != null) {
rootView.home_play_btn.setOnClickListener {
val fragment: BaseFragment = ListFragment.newInstance()
val fragManager: FragmentManager = (activity as AppCompatActivity).supportFragmentManager
fragManager.beginTransaction()
.replace(R.id.content_home_frame, fragment, TAG).commit()
}
fragmentManager를 fragment 내부로 가져오는 가장 좋은 방법은 새로운 메서드를 호출하는 것입니다.
getParentFragmentManager()
또는 코틀린 파일에서 속성 액세스 구문을 사용합니다.
parentFragmentManager
로드할 fragmentManager를 지정합니다(하위 fragment와 상위 fragment 중에서 선택).
사용해 보십시오.
private SectionsPagerAdapter mSectionsPagerAdapter = new SectionsPagerAdapter(getActivity().getSupportFragmentManager());
getSupportFragmentManager()
때에서는 fragment에 액세스할 수 있습니다.
getSupportFragmentManager()
라고 하는 다른 방법을 사용함으로써.getFragmentMangaer()
와 동일하게 작동합니다.getSupportFragmentManager()
예전처럼 사용할 수 있습니다.
fragmentTransaction =getFragmentManager().beginTransaction();
나는 이 코드를 사용하고 그것은 작동합니다.
val profileFragment = ProfileFragment()
val fragmentManager = parentFragmentManager
fragmentManager.beginTransaction().apply {
replace(R.id.fragment_main, profileFragment, ProfileFragment::class.java.simpleName)
addToBackStack(null)
commit()
R.id .dll_main이 사용한 기본 레이아웃입니다.주 활동을 사용한 경우 레이아웃에 대한 ID를 지정할 수 있습니다.
언급URL : https://stackoverflow.com/questions/20237531/how-can-i-access-getsupportfragmentmanager-in-a-fragment
'sourcecode' 카테고리의 다른 글
파일에서 찾기 및 바꾸기 실패 (0) | 2023.08.12 |
---|---|
부트스트랩 버튼 드롭다운 제목에 선택한 항목을 표시하는 방법 (0) | 2023.08.12 |
별도의 개발 및 Prod Firebase 환경 (0) | 2023.08.12 |
UI WebView에서 WKWebView로 마이그레이션 (0) | 2023.08.12 |
UI WebView의 쿠키는 어디에 저장됩니까? (0) | 2023.08.12 |