DjP*_*DjP 139 android android-fragments android-fragmentactivity android-support-library fragmentmanager
我有一个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);
Run Code Online (Sandbox Code Playgroud)
Eld*_*abu 255
你可以直接打电话
getFragmentManager()
Run Code Online (Sandbox Code Playgroud)
获取片段管理器.
要么
在你的片段中,
创建字段:
private FragmentActivity myContext;
Run Code Online (Sandbox Code Playgroud)
覆盖片段的onAttach方法:
@Override
public void onAttach(Activity activity) {
myContext=(FragmentActivity) activity;
super.onAttach(activity);
}
Run Code Online (Sandbox Code Playgroud)
当您需要获得支持片段管理器调用时:
FragmentManager fragManager = myContext.getSupportFragmentManager(); //If using fragments from support v4
Run Code Online (Sandbox Code Playgroud)
要么
FragmentManager fragManager = myContext.getFragmentManager();
Run Code Online (Sandbox Code Playgroud)
你完成了.
Mar*_*ark 80
您需要做的就是使用
getFragmentManager()
Run Code Online (Sandbox Code Playgroud)
片段上的方法.当您在添加此片段时使用它时,它将为您提供支持片段管理器.
Var*_*oid 40
简单地说就是这样 -
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.
Run Code Online (Sandbox Code Playgroud)
要么
getActivity().getSupportFragmentManager();
Run Code Online (Sandbox Code Playgroud)
在你的Fragment的onActivityCreated()方法和onActivityCreated()之后调用的任何方法.
Ran*_*mar 13
Kotlin用户尝试这个答案
(activity as AppCompatActivity).supportFragmentManager
Run Code Online (Sandbox Code Playgroud)
bsa*_*ner 11
如果你有这个问题,并且在api级别21+这样做:
map = ((SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map))
.getMap();
Run Code Online (Sandbox Code Playgroud)
这将在片段内部使用时获取地图.
在java中你可以替换为
getChildFragmentManager()
Run Code Online (Sandbox Code Playgroud)
在 kotlin 中,通过
childFragmentManager
Run Code Online (Sandbox Code Playgroud)
希望它有帮助:)
getFragmentManager()
已被弃用,以明确getParentFragmentManager()
您想要访问父片段而不是任何子片段的片段管理器。
getParentFragmentManager()
只需在 Java 或parentFragmentManager
Kotlin 中使用即可。
我的父活动扩展了 AppCompatActivity,所以我不得不将我的上下文转换为 AppCompatActivity 而不仅仅是 Activity。
例如。
FragmentAddProduct fragmentAddProduct = FragmentAddProduct.newInstance();
FragmentTransaction fragmentTransaction = ((AppCompatActivity)mcontext).getSupportFragmentManager().beginTransaction();
Run Code Online (Sandbox Code Playgroud)
在 kotlin 中执行此操作的简单新方法
requireActivity().supportFragmentManager
Run Code Online (Sandbox Code Playgroud)
您可以getActivity().getSupportFragmentManager()
随时使用getSupportFragmentManager.
层次结构是Activity - > fragment.fragment不能直接调用getSupportFragmentManger,但Activity可以.因此,您可以使用getActivity来调用片段所在的当前活动并获取getSupportFragmentManager()
归档时间: |
|
查看次数: |
198271 次 |
最近记录: |