一、参考方案

1.所有添加产品到购物车、修改购物车产品数量的操作,在操作完毕后发送广播。

2.静态注册一个广播接受者类,在广播接受者中对发送的广播进行判断,然后进行修改数量的操作。

清单文件

   <!-- 购物车产品数量 -->        <receiver android:name="com.chinabuye.android.broadcast.NumberBroadcast" >            <intent-filter android:priority="1000" >                <action android:name="add.to.cart.params" />                <action android:name="add.to.cart.noparams" />                <action android:name="cart.reduce" />                <action android:name="cart.add" />                <action android:name="cart.remove" />                <action android:name="buy.success" />            </intent-filter>        </receiver>
广播接受者

package com.chinabuye.android.broadcast;import com.chinabuye.android.bean.BroadAction;import com.chinabuye.android.bean.NumberBean;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.widget.Toast;public class NumberBroadcast extends BroadcastReceiver {// 广播接受者,修改购物车产品数量@Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction();NumberBean bean = NumberBean.getInstance();int number = bean.getNumber();if (action.equals(BroadAction.ACTION3_REDUCE)) {// 数量减1bean.setNumber(context,number - 1);} else if (action.equals(BroadAction.REMOVE)) {// removeint number2 = intent.getIntExtra("number", -1);if (number2 != -1 && number2 <= number) {bean.setNumber(context,number - number2);}} else if (action.equals(BroadAction.BUY_SUCCESS)) {// 下单购买成功bean.setNumber(context,0);} else {// 数量加1bean.setNumber(context,number + 1);}Intent intent2 = new Intent();intent2.setAction(BroadAction.CHANGE_NUMBER);context.sendBroadcast(intent2);}}

3.在需要显示购物车产品数量的每个Activity中,动态注册一个广播接受者,接受静态注册的广播接受者发送的广播,在接收到广播后,修改显示的数量。

动态注册

//注册广播,用于跟新购物车产品数量initBroadcast();
修改显示数量

/************* 广播 **************//** * 注册广播 */private void initBroadcast() {IntentFilter filter = new IntentFilter();filter.addAction(BroadAction.CHANGE_NUMBER);registerReceiver(myReceiver, filter);}/** * 接受广播 */private BroadcastReceiver myReceiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {NumberBean bean = NumberBean.getInstance();cartnumber.setText(bean.getNumber() + "");}};/** * 解除广播 */protected void onDestroy() {unregisterReceiver(myReceiver);stopService(service);super.onDestroy();};



更多相关文章

  1. android 广播BroadcastReveicer详解
  2. Android第一行代码第二版:5.3.2发送有序广播,在安卓8上无法接收广
  3. LocalBroadcastManager 的问题
  4. Android中四大组件(四大天王)
  5. android有序广播和无序广播的区别
  6. Android获取系统播放音乐信息
  7. Android——Fragment的静态注册和动态注册(含源码下载)
  8. 手机拨号启动隐藏程序
  9. android service 广播 更新 activity

随机推荐

  1. 在Mac OS X 下配置Android(安卓)NDK(配置
  2. Timer TimerTask Handler三剑合一
  3. 图像滤镜(GPUImage/GPU加速)、美化/图像
  4. Android(安卓)Studio如何自动 import
  5. Android(安卓)Studio使用gradle-retrolam
  6. android 系统属性
  7. Android(安卓)Camera 通过V4L2与kernel d
  8. android crash 追踪方式
  9. Task和Activity相关
  10. React-native 开发之: 安卓(android) app