Fragment的Tag

android.app.FragmentManager.findFragmentByTag(String tag)


使用Fragment,先获取其实例,通过tag找到内存中的实例,如果取到null,再初始化实例。那么tag怎么获取?

1、

android.app. FragmentTransaction.replace( int containerViewId, Fragment fragment, String tag)

的时候用户指定tag,

如:

        FragmentManager manager = getChildFragmentManager();//嵌套Fragment需要getChildFragmentManager
        if (manager != null) {
            // Add default fragments to view. Try to reuse old fragments or create new ones
            FragmentTransaction transaction = manager.beginTransaction();
            AnalogClockFragment mClockFragment = (AnalogClockFragment) manager
                    .findFragmentByTag("AnalogClockFragment");
            if (mClockFragment == null) {
                mClockFragment = new AnalogClockFragment();//子Fragment实例
                transaction.replace(R.id.clock_frame, mClockFragment, "AnalogClockFragment");//tag   AnalogClockFragment
            } else {
                transaction.show(mClockFragment);
            }
            transaction.commit();

}


2、Fragment实例化的时候Android系统会给Fragment对象一个默认的tag

查看源代码 android.support.v4.app.FragmentPagerAdapter

private String getFragmentTag(int position){
//看源代码 android.support.v4.app.FragmentPagerAdapter
return "android:switcher:"+R.id.pager+":"+position;
}

然后根据tag获取fragment对象

getActivity().getFragmentManager().findFragmentByTag(getFragmentTag(position));

这里的position是:如果有多个fragment,position是其顺序号,从0开始,0、1、2。。。

这里的R.id.pager是:fragment所在View容器控件id

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值