我如何访问片段中的getSupportFragmentManager()?
我有一个FragmentActivity,我想使用它内的地图片段。 我有一个问题让支持片段pipe理器来访问它。
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()
得到片段pipe理器。
要么
在你的片段中,
创build字段:
private FragmentActivity myContext;
覆盖片段的onAttach方法:
@Override public void onAttach(Activity activity) { myContext=(FragmentActivity) activity; super.onAttach(activity); }
当您需要获得支持片段pipe理器调用时:
FragmentManager fragManager = myContext.getSupportFragmentManager(); //If using fragments from support v4
要么
FragmentManager fragManager = myContext.getFragmentManager();
你完成了。
所有你需要做的就是使用
getFragmentManager()
方法在你的片段。 它会给你支持片段pipe理器,当你在添加这个片段的时候使用它。
片段文档
简单地把它像这样 –
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()之后被调用的任何方法中。
您可以随时使用getActivity().getSupportFragmentManager()
来获取支持片段pipe理器。
层次结构是活动 – >片段。 片段不能直接调用getSupportFragmentManger,但Activity可以。 因此,可以使用getActivity来调用片段所在的当前活动并获取getSupportFragmentManager()
如果你有这个问题,并在API级别21+做到这一点:
mMap = ((SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map)) .getMap();
这将在片段内部使用时获得映射。
我的父级活动扩展AppCompatActivity,所以我不得不将我的上下文转换为AppCompatActivity,而不是只是活动。
例如。
FragmentAddProduct fragmentAddProduct = FragmentAddProduct.newInstance(); FragmentTransaction fragmentTransaction = ((AppCompatActivity)mcontext).getSupportFragmentManager().beginTransaction();
尝试这个:
private SectionsPagerAdapter mSectionsPagerAdapter = new SectionsPagerAdapter(getActivity().getSupportFragmentManager());
你可以简单地访问像
Context mContext; public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { mContext = getActivity(); }
然后使用
FragmentManager fm = ((FragmentActivity) mContext) .getSupportFragmentManager();
在你的片段中做这个
getActivity().getSupportFragmentManager()
Kotlin用户试试这个答案
(activity as AppCompatActivity).supportFragmentManager
getSupportFragmentManager()
当你在活动中,并且想要得到一个片段,但在你可以访问的片段中
getSupportFragmentManager()
通过使用另一个称为getFragmentMangaer()
方法,它和getSupportFragmentManager()
,你可以像以前一样使用它:
fragmentTransaction =getFragmentManager().beginTransaction();