Fragment常见问题

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值