android--------实现Activity和Fragment通信的面向对象的万能接口
前言

最后在Activity中实现通信:
- public class MainActivity extends AppCompatActivity{
- private ArrayList<Fragment> fragmentArrayList = new ArrayList<>();
- private Fragment mCurrentFragment;
- private BottomNavigationBar mBottomNavigationBar;
- BadgeItem badgeItem;
- FragmentManager mFragmentManager;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- initView();
- }
- private void initView(){
- mFragmentManager = getSupportFragmentManager();
- initFragemnt();
- showFragment(0);
- mBottomNavigationBar = (BottomNavigationBar) findViewById(R.id.bottom_navigation_bar);
- mBottomNavigationBar.setMode(BottomNavigationBar.MODE_FIXED);
- mBottomNavigationBar.setBackgroundStyle(BottomNavigationBar.BACKGROUND_STYLE_STATIC);
- mBottomNavigationBar.setBarBackgroundColor(android.R.color.white);
- badgeItem = new BadgeItem()
- .setBackgroundColor(Color.RED).setText("99")
- .setHideOnSelect(true); //设置被选中时隐藏角标
- mBottomNavigationBar
- .setActiveColor(R.color.colorAccent) //设置选中的颜色
- .setInActiveColor(R.color.colorPrimary);//未选中
- mBottomNavigationBar.addItem(new BottomNavigationItem(R.mipmap.ic_launcher, "首页"))
- .addItem(new BottomNavigationItem(R.mipmap.ic_launcher, "店铺"))
- .addItem(new BottomNavigationItem(R.mipmap.ic_launcher, "购物车"))
- .addItem(new BottomNavigationItem(R.mipmap.ic_launcher, "我的").setBadgeItem(badgeItem))
- .initialise();
- mBottomNavigationBar.setTabSelectedListener(new BottomNavigationBar.OnTabSelectedListener(){
- @Override
- public void onTabSelected(int position) {
- showFragment(position);
- }
- @Override
- public void onTabUnselected(int position) {
- }
- @Override
- public void onTabReselected(int position) {
- }
- });
- }
- private void showFragment(int page) {
- FragmentTransaction mFragmentTransaction = mFragmentManager
- .beginTransaction();
- if (mCurrentFragment != null) {
- mFragmentTransaction.hide(mCurrentFragment);
- }
- mCurrentFragment = fragmentArrayList.get(page);
- if (mCurrentFragment.isAdded())
- {
- mFragmentTransaction.show(mCurrentFragment);
- }else {
- mFragmentTransaction.add(R.id.fragmenta, mCurrentFragment,mCurrentFragment.getClass().getName());
- }
- mFragmentTransaction.commitAllowingStateLoss();
- }
- private void initFragemnt(){
- fragmentArrayList.add(new A());
- fragmentArrayList.add(new B());
- fragmentArrayList.add(new C());
- fragmentArrayList.add(new D());
- }
- public void setFunctionForFragment(final String tag){
- BaseFragment fragment=(BaseFragment)mFragmentManager.findFragmentByTag(tag);
- FunctionManager functionManager=FunctionManager.getInstance();
- fragment.setmFunctionManager(functionManager.addFunction(new FunctionNoParamNotResult(A.INTERFCE) {
- @Override
- public void function() {
- Toast.makeText(MainActivity.this,"无参无返回值"+tag,Toast.LENGTH_LONG).show();
- }
- }).addFunction(new FunctionNoParamWithResult<String>(B.INTERFCE) {
- @Override
- public String function() {
- Toast.makeText(MainActivity.this,"无参有返回值",Toast.LENGTH_LONG).show();
- return "张三";
- }
- }).addFunction(new FunctionWithParamNoResult<Integer>(C.INTERFCE) {
- @Override
- public void function(Integer o) {
- Toast.makeText(MainActivity.this,"有参无返回值"+o,Toast.LENGTH_LONG).show();
- }
- }).addFunction(new FunctionWithParamResultn<String>(D.INTERFCE) {
- @Override
- public String function(String o) {
- Toast.makeText(MainActivity.this,"有参有返回值"+o,Toast.LENGTH_LONG).show();
- return "zhangqie";
- }
- }));
- }
- }
效果图:
源码下载Github:https://github.com/DickyQie/android-fragment-interface
android--------实现Activity和Fragment通信的面向对象的万能接口的更多相关文章
- 架构师成长之路-基于android fragment通信的面向对象的万能接口
前言 开发一个app时,常用Activity和Fragment,由于操作方便Fragment越来越受欢迎,这样就避免不了Activity和Fragment.Fragment和Fragment之间的通信 ...
- Android之Activity与Service通信
一.当Acitivity和Service处于同一个Application和进程时,通过继承Binder类来实现. 当一个Activity绑定到一个Service上时,它负责维护Service实例的引用 ...
- 从Android中Activity之间的通信说开来[转]
http://www.cnblogs.com/virusswb/archive/2011/08/02/2124824.html 引言 最近两个星期在研究android的应用开发,学习了android应 ...
- Android中Activity加入Fragment使用注意事项及常用技巧
Fragment中AlertDialog弹出窗口的使用 Fragment默认不具有Content的一些方法和属性,因此在Activity中可以使用的一些方法在Fragment中使用就需要一些小技巧了 ...
- 【android】activity、fragment传值例子
1:Activity篇 1.1向Activity传值 关键点在于putExtra.如果传递类的话,记得类实现Serializable接口 Intent intent = new Intent(Firs ...
- Android之Activity与fragment完整生命周期图
转自:https://github.com/xxv/android-lifecycle
- Android:手把手教你 实现Activity 与 Fragment 相互通信,发送字符串信息(含Demo)
前言Activity 与 Fragment 的使用在Android开发中非常多今天,我将主要讲解 Activity 与 Fragment 如何进行通信,实际上是要解决两个问题: Activity 如何 ...
- Android 数据传递(二)Activity与fragment之间的通信
在网上找到了一篇总结的非常好的文章,我这里就贴出他的博文地址.自己就不再写这个方面的总结了. Activity与Fragment通信(99%)完美解决方案
- Android系列之Fragment(三)----Fragment和Activity之间的通信(含接口回调)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...
随机推荐
- 解决Win10 Git图标不显示问题
升级系统到win10 1803版本以后发现TortoiseGit的忽略图标不显示了 开始以为是版本问题,将TortoiseGit版本进行了升级还是不行 网上查找以后发现 Windows Explore ...
- 【做题】CF119D. String Transformation——KMP
题意:有两个字符串\(a,b\),下标从\(0\)开始.求数对\((i,j)\)满足\(a[i+1:j] + r(a[j:n]) + r(a[0:i+1]) = b\),其中\(r(s)\)表示字符串 ...
- ssm项目部署到服务器过程
ssm项目部署到服务器过程 特别篇 由于准备春招,所以希望各位看客方便的话,能去github上面帮我Star一下项目 https://github.com/Draymonders/Campus-Sho ...
- P4492 [HAOI2018]苹果树
思路 题目要求的其实就是每种方案的权值之和(因为每种方案的概率相等) 所以自然想到要求所有的边对最终答案的贡献次数 考虑这一条边被经过了多少次,有这个子树内的点数*子树外的点数次,即\(k\times ...
- Unsupervised Image-to-Image Translation Networks --- Reading Writing
Unsupervised Image-to-Image Translation Networks --- Reading Writing 2017.03.03 Motivations: most ex ...
- PTA 输出全排列(20 分)
7-2 输出全排列(20 分) 请编写程序输出前n个正整数的全排列(n<10),并通过9个测试用例(即n从1到9)观察n逐步增大时程序的运行时间. 输入格式: 输入给出正整数n(<10). ...
- Leetcode122-Best Time to Buy and Sell Stock II-Easy
Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...
- HDU 3526 Computer Assembling(最小割)
http://acm.hdu.edu.cn/showproblem.php?pid=3526 题意:有个屌丝要配置电脑,现在有n个配件需要购买,有两家公司出售这n个配件,还有m个条件是如果配件x和配件 ...
- Java的反射机制Reflect
简介: 动态获取类的信息.动态调用对象的方法的功能叫做:Java 的反射(Reflection)机制. Reflection是不同于C++等静态语言,而被视为准动态语言的关键性质.反射机制允许程序在运 ...
- OpenLayers中的球面墨卡托投影
最近看OpenLayers,研究到地图投影时找到官方的文档,就翻译了一下,由于英文能力差,翻译不好的地方,请看原文 原文地址:http://docs.openlayers.org/library/sp ...