通过 回调让Activity和Fragment及时交互

Fragment 一经推出,就广泛的使用在项目中,在适配方面,减少代码冗余方面大有助益,那么Fragment和Activity如何交互呢,我所知的有,通过fragment.setxxx(),((类型转换)getActivity).setxxx(),eventbus等等,那么是否可以通过回调让Activity和 Fragment及时交互呢?

首先讲一下我对回调的理解,A要完成某件事情,但是他没法完成,需要委托B去完成,B完成了告诉A完成的情况。

举一个列子,在办理银行卡的时候,有时候会开通短信服务,当你的银行卡中钱发生变化的时候 就会及时通知你,这就相当会 客户给银行设置了一个监听,这个监听一直在等待,钱有变化了 就回调出结果,如果你不设置监听,钱变化了,自然也不会及时通知你

写一个简单的例子:

MoneyCallBack 作为一个接口,主要用于监听银行卡中钱的变化,相当于定制的短信服务

package callbackDemo;

/**
 * @author why 小二
 * 短信业务
 *
 */
public interface MoneyCallBack {
	void savaMoney();//短信通知用户存钱了
	void spendMoney();//短信通知用户消费了

}
Bank 作为一个银行类主要用于处理存钱,取钱 啥啥啥的金融业务,当用户的钱发生 变化时,如果用户办理了短信服务,通知用户钱发生了变化,这里的短信服务相当于上面的MoneyCallBack,如果不设置,当然也就不通知了

package callbackDemo;

/**
 * @author why
 * 银行
 *
 */
public class Bank {
	MoneyCallBack mCallBack;
	int mMonthCount=12;// 办理短信服务的月数,一般为12个月
	
	public void setCallBack(MoneyCallBack mCallBack) {
		this.mCallBack = mCallBack;
	}
	public void getMoney(){
		new Thread(){public void run() {
			for (int i = 0; i < mMonthCount; i++) {
				if (mCallBack!=null) {
					mCallBack.savaMoney();
					mCallBack.spendMoney();
					
				}
				
			}
		};
		}.start();
	}

}

Client作为 办理银行业务的自由人,可以办理任何业务

package callbackDemo;

/**
 * @author why 小二
 * 客户
 *
 */
public class Client {
	public static void main(String[] args) {
		Bank bank=new Bank();
		//定制短信服务 
		bank.setCallBack(new MoneyCallBack() {
			
			@Override
			public void spendMoney() {
				System.out.println("尊敬的客户,你存入了钱");
				
			}
			
			@Override
			public void savaMoney() {
				System.out.println("尊敬的客户,你消费了钱");
				
			}
		});
		
		bank.getMoney();
		
	}

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值