本文共 1651 字,大约阅读时间需要 5 分钟。
Fragment 跳转到指定的Fragment 主要分为2中情况
1 同一个Activity上的Fragment 跳转到指定Fragment 例如MainActivity 上的Fragment 跳转问题
2 不在同一个Activity的2个Fragment 跳转
如果对Fragment 跳转问题没有思路,首先需要想到的就是Fragment 不可能独立存在的,它依附于Activity
这样把Fragment的跳转想成Activity之间的跳转的问题就好处理了
下面已自己手写的demo为例 说下2中情况
第一种: 同一个Activity上的Fragment 跳转
他们都是在同一个Activity 可以是直接获取宿主的Activity
例如在跳转的Fragment里面获取,这个需要MainActivity的setTabSelection() 为public 方法
MainActivity main = (MainActivity) getActivity(); main.setTabSelection(2);
这里解释下 setTabSelection 这个就是点击底部切换Fragment的方法 例如微信底部界面,我的,发现之类的切换
第二种方法: 不再同一个Activity上的Fragment 切换
假如是TabLayout 下面的Fragment 跳转到MainActivity上的Fragment
需要我们可以先跳转Fragment 的宿主Activity 然后传递一个标志,当MainActivity 获取到标志的时候然后在切换就行了
例如Taylayout 的Fragment 里面填写如下
Intent intent = new Intent(getActivity(),MainActivity.class); intent.putExtra("index",1); startActivity(intent);
然后到MainActivity 里面接受index
int index = getIntent().getIntExtra("index", 0); if (index == 1) { setTabSelection(2); }
大家都知道Intent 使用int 传递有默认值 这里设置为0 是因为模式启动界面自己设置为0 ,如果默认启动界面为1 这里自己设置1 即可 ,根据自己的需求设置
setTabSelection(2); 这个是自己写Fragment 切换的方法
如果是MainActivity 的Fragment 跳转的TabLayout 上的Fragment 道理是一样的,可以先跳转到TabLayout 的Activity 上然后
在设置地几个界面即可
例如 在MainActivity的Frament 上的代码如下
Intent intent = new Intent(getActivity(), DetailsActivity.class); intent.putExtra("id", 2); startActivity(intent);
在Tablayout 上的Activity 写入如下
int id = getIntent().getIntExtra("id", 0); if (id == 2) { viewPager.setCurrentItem(1); }
使用setCurrentItem 来设置当前为那个Fragment
Activity 跳转到指定的Fragment ,这个也是先跳转的Fragment的宿主的Activity 然后自己在根据需求
切换到相应的Fragment 即可。。。。 。。
转载地址:https://huxiaomu.blog.csdn.net/article/details/100275152 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!