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/ ...
随机推荐
- Oracle SQL——inner jion;left join;right join的区别和使用场景
背景 在一次面试的时候,面试官让我说一下这三者的使用场景和区别,当时瞬间懵逼,哈哈.回来赶快看一看,记下来. 详解 inner join 等值查询:返回两张表中,联结字段值相等的组合记录 举例:所有学 ...
- Ubuntu 18.04 修改gedit的配色方案
下图中的蓝色的注释代码,真是有点让人瞎眼的感觉 去这个网站 https://github.com/mig/gedit-themes/tree/master 下载所有后解压到/usr/share/gtk ...
- luogu1387 最大正方形
P1387 最大正方形 正方形O(n) 题目描述 在一个n*m的只包含0和1的矩阵里找出一个不包含0的最大正方形,输出边长. 输入输出格式 输入格式: 输入文件第一行为两个整数n,m(1<=n, ...
- 颠倒的价牌|2013年蓝桥杯A组题解析第四题-fishers
颠倒的价牌 小李的店里专卖其它店中下架的样品电视机,可称为:样品电视专卖店. 其标价都是4位数字(即千元不等). 小李为了标价清晰.方便,使用了预制的类似数码管的标价签,只要用颜色笔涂数字就可以了(参 ...
- (转)Autonomous_Vehicle_Paper_Reading_List
Autonomous_Vehicle_Paper_Reading_List 2018-07-19 10:40:08 Reference:https://github.com/ZRZheng/Auton ...
- WijmoJS 全面支持 Angular 7
概述 首先恭喜Angular团队发布Angular 7.0.0版本! 对于大多数开发人员,只需要执行一个命令就可以更新到Angular 7: ng update \@angular/cli \@ang ...
- hihoCoder 1339 Dice Possibility(DP)
http://hihocoder.com/problemset/problem/1339 题意: 求一个骰子扔n次后最后点数相加为m的概率. 思路: f[i][j]表示扔到第i次时总值为j的概率. # ...
- HDU 5782 Cycle(KMP+哈希)
http://acm.split.hdu.edu.cn/showproblem.php?pid=5782 题意:给出两个长度相等的字符串,输出两个字符的每个前缀是否循环相同. 思路: 如果连个串循环相 ...
- Spring框架学习
没有状态变化的对象(无状态对象):应当做成单例. Spring-framework的下载:http://repo.spring.io/release/org/springframework/sprin ...
- JAVA中使用浮点数类型计算时,计算精度的问题
标题 在Java中实现浮点数的精确计算 AYellow(原作) 修改 关键字 Java 浮点数 精确计算 问题的提出:如果我们编译运行下面这个程序会看到什么?publi ...