1. Fragment嵌套Fragment不显示问题
比如,Fragment1里面有一个ViewPager,ViewPager中有Fragment2和Fragment3,此时,ViewPager的适配器构造时传入的FragmentManager的值不应该是getFragmentManager()
或是getActivity().getSupportFragmentManager()
,而应该传入getChildFragmentManager()
,不然就会造成ViewPager中的Fragment不显示问题。
2. 给Fragment传递参数
传递参数
Bundle bundle = new Bundle();
bundle.putLong("param", 123L);
MyFragment fragment = new MyFragment();
fragment.setArguments(bundle);
接收参数
long param = getArguments().getLong("param");
另一种方式:可以通过Fragment的构造函数进行参数传递,但是缺点是当手机横竖屏切换时,Fragment重建后此参数会缺失;因为Fragment重建是通过默认构造函数构建的。
3. Fragment启动Fragment时,被启动的Fragment关闭时返回参数
public void setTargetFragment(Fragment fragment, int requestCode)
该方法给该Fragment对象设置一个可选的目标。例如,如果该Fragment对象使用由另一个Fragment对象启动的,并且在想要把一个给定的结果返回给第一个Fragment对象时,就可以使用这个方法。
参数:
fragment:
该参数给Fragment对象指定一个接受结果的目标Fragment对象。
requestCode:
可选的请求编码,为返回到onActivityResult(int, int, Intent)方法提供便利。
getTargetFragment().onActivityResult(requestCode, Activity.RESULT_OK, intent)