前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >activity嵌套fragment,fragment内嵌fragment之间传值切换fragment

activity嵌套fragment,fragment内嵌fragment之间传值切换fragment

作者头像
fanfan
发布2022-05-07 14:59:16
9420
发布2022-05-07 14:59:16
举报
文章被收录于专栏:编程思想之路编程思想之路

至于fragment的用法,fragment+viewpager的滑动切换代码请参考博文

Android基础:翻页控件Viewpager的使用方法,viewpager+fragment混合使用

fragment与Activity

当在使用activity嵌套fragment,fragment再嵌套子fragment时,相当于有两层fragment,假设最外层为第一层,其中一个Fragment为ParentfragmentA,该ParentFragmentA中又嵌套了三个fragment,也就是说第二层为ChildFragment1,ChildFragment2,ChildFragment3,如果想在其中一个子fragment中的控件点击切换到同一层的另一个子fragment

如图,在第二层fragment中,child1fragment中有两个控件viewI和viewII,点击viewI可以切换到同一层的fragment,比如,点击切换到ChildFragment2

实现如下:

在点击viewI时进行如下操作

代码语言:javascript
复制
  FragmentManager manager = getFragmentManager();//获取到父fragment的管理器
  //获取到父parentFragment
  ParentFragmentA home = (ParentFragmentA) manager.getFragments().get(0);
 //获取到ParentFragment的mViewPager变量      
  home.mViewPager.setCurrentItem(1);

说明一下,ParentFragmentA中声明的mViewPager必须为public。

说一下getFragmentManger方法

代码语言:javascript
复制
  /**
     * Return the FragmentManager for interacting with fragments associated
     * with this fragment's activity.  Note that this will be non-null slightly
     * before {@link #getActivity()}, during the time from when the fragment is
     * placed in a {@link FragmentTransaction} until it is committed and
     * attached to its activity.
     *
     * <p>If this Fragment is a child of another Fragment, the FragmentManager
     * returned here will be the parent's {@link #getChildFragmentManager()}.
     */
    final public FragmentManager getFragmentManager() {
        return mFragmentManager;
    }

    /**
     * Return a private FragmentManager for placing and managing Fragments
     * inside of this Fragment.
     */
    final public FragmentManager getChildFragmentManager() {

官方API已经写明,getFragmentManger方法:如果该fragment是另一个fragment的子fragment,则获取到的是父fragment的manager

getChildFragmentManager方法:获取到外层fragment的子fragment的manager

对于viewII的点击事件,实现从Child1切换到ParentB

代码语言:javascript
复制
              //获取到 所依附的activity对象
                InitEmptyKeyActivity activity  = (InitEmptyKeyActivity) getActivity();
               activity.mViewPager.setCurrentItem(IntentConstant.MANAGE_AND_OP_FRAGMENT);
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-06-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档