Android通过EventBus进行对activity到fragment跳转的控制
来源:互联网 发布:mac os x ei 编辑:程序博客网 时间:2024/05/29 16:48
Android原生api对Activity跳转到fragment中没有特定的方法,自己在网上也找到很多关于两者跳转的方法,但都感觉不是太清晰,无统一性,现在我们就用EventBus进行跳转控制
为了实现需求,我特意做了个稍微复杂点的例子,大致是这样:MainActivity里加载了三个Fragment(Fragment01,Fragment02,Fragment03),在Fragment01里面又使用了tablayout+viewpage,即Fragment01里面又加载了四个Fragment。 然后新建一个Activity,通过这个Activity跳转到Fragment01里面的第三个Fragment。好了,基本需求就这些,下面看代码
首先导入在studio里导入3.0的EventBus
compile 'org.greenrobot:eventbus:3.0.0'
创建要跳转的Activity
public class DemoActivity extends AppCompatActivity {private Button but;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_demo); but= (Button) findViewById(R.id.but); but.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { EventBus.getDefault().post(3); finish(); } });}@Overrideprotected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this);}}
在点击事件里加入EventBus.getDefault().post(new Demo(3));,即是你要跳转的哪个fragment,这里指要跳到第三个fragment。另外最好加上finish(),跳转过去后把当前Activity销毁掉。
然后在哪里接受数据,就在哪里注册EventBus,这里是在Fragment01里注册:
public class Fragment01 extends BaseFragment {private TabLayout mTabLayout;private ViewPager mViewPager;private CourseMainAdapter courseMainAdapter;List<Fragment> fragments = new ArrayList<Fragment>();String[] tabTitle = new String[]{"一级", "二级", "造价", "安全"};@Overrideprotected View initView() { View view = View.inflate(mActivity, R.layout.fragment_course, null); mTabLayout = (TabLayout) view.findViewById(R.id.tab_course_main); mViewPager = (ViewPager) view.findViewById(R.id.vp_course_main); return view;}@Overrideprotected void initData() { super.initData(); EventBus.getDefault().register(this); fragments.add(new FirstEngineerFragment()); fragments.add(new SecondEngineerFragment()); fragments.add(new CostEngineerFragment()); fragments.add(new SafeEngineerFragment()); courseMainAdapter = new CourseMainAdapter(getChildFragmentManager(), fragments); mViewPager.setAdapter(courseMainAdapter); mTabLayout.addTab(mTabLayout.newTab().setText(tabTitle[0])); mTabLayout.addTab(mTabLayout.newTab().setText(tabTitle[1])); mTabLayout.addTab(mTabLayout.newTab().setText(tabTitle[2])); mTabLayout.addTab(mTabLayout.newTab().setText(tabTitle[3])); mTabLayout.setupWithViewPager(mViewPager); mTabLayout.getTabAt(0).setText(tabTitle[0]); mTabLayout.getTabAt(1).setText(tabTitle[1]); mTabLayout.getTabAt(2).setText(tabTitle[2]); mTabLayout.getTabAt(3).setText(tabTitle[3]); }@Subscribe(threadMode = ThreadMode.MAIN)public void onEvent(int a){ mViewPager.setCurrentItem(a); Log.d("TAG","过来的数据: "+a);}@Overridepublic void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this);}}
注册完后别忘了在onDestroy()方法里进行取消注册,通过onEvent来接受DemoActivity里EventBus传来的数据,通过 mViewPager.setCurrentItem(a);方法来展示你要跳转的哪个Fragment。这样就完成了,相比较一般方法,使用EventBus可以跳过MainActivity直接到你想看到的Fragment。
1 0
- Android通过EventBus进行对activity到fragment跳转的控制
- #android# eventbus fragment的跳转
- android Activity跳转到指定的Fragment
- Android activity跳转到另一个activity的指定fragment页面
- 使用EventBus实现Activity与Fragment之间的跳转
- android从activity跳转到fragment解决
- Android从Fragment中跳转到Activity
- android从activity跳转到fragment解决
- Fragment跳转到Activity
- Activity 跳转到 Fragment
- activity跳转到fragment
- Activity跳转到Fragment的问题
- activity中跳转到fragment的思路
- Android通过uri跳转到APP指定的Activity
- 使用EventBus进行Fragment和Activity通信
- 使用EventBus进行Fragment和Activity通信
- 从一个Activity直接跳转到一个Fragment中,进行相应的操作
- Android activity跳转到另一个activity的指定fragment页面
- 通过异或快速找到不同的字符元素
- Hdu 1269.迷宫城堡
- 在html界面获取地址栏内传过来的值的三种方法
- JSON字符串解析
- JSON字符串解析
- Android通过EventBus进行对activity到fragment跳转的控制
- 简单商品展示案例(ListView)
- 今天开通我的博客啦~
- POJ 3744 Scout YYF I (矩阵优化的概率DP)
- MySQL/事务
- SIFT算法综述
- 微信小程序开发之搭建腾讯云ubuntu开发环境PHP+MYSQL+APACHE2
- ARM指令例子
- 分布式计算、并行计算及集群、网格、云计算的区别