android - broadcast

12 篇文章 0 订阅
1 篇文章 0 订阅

android中靠broadcast 在不同组件之间进行通讯, 这一点其实和Qt的信号槽很类似。


假设有两个activity, Activity A,和 Activity B

A中有一个spinner,当选择改变时候,把选中的项发送给B中进行后续处理。


通过注册一个Broadcast可以把消息通知出去。通过Intent.putExtra()方法可以传递参数。


Activity A中:

private OnItemSelectedListener mSpinnerItemSelectedListener = new OnItemSelectedListener() {


@Override

public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,

long arg3) {

// TODO Auto-generated method stub

//当spinnerType刷新时候,注册一个广播,然后在EditActivity里面进行接受并更新view-根据spinnerType来决定是否需要手工在EditActivity里面增加一个Spinner

Intent intent = new Intent();

intent.putExtra("Type", spinnerType.getSelectedItem().toString());

intent.setAction("action.TypeUpdated");

sendBroadcast(intent);

}

};



Activity B中:

在onCreate()方法中注册一个广播接收器:

 //注册broadcast receiver接受TabhostActivity里面的spinnerType下拉列表框的更新广播!

        IntentFilter intentFilter = new IntentFilter();  

        intentFilter.addAction("action.TypeUpdated");  

        registerReceiver(mTypeBroadcastReceiver, intentFilter); 


然后定义该广播接收器

BroadcastReceiver mTypeBroadcastReceiver = new BroadcastReceiver(){

@Override

public void onReceive(Context context, Intent intent) {

// TODO Auto-generated method stub

String action = intent.getAction();

if(action.equals("action.TypeUpdated")){

if(intent.getExtras().getString("Type").equals("250")){

if(rl.findViewById(R.id.param1_spinner_shaft) != null){

rl.removeView(spinner_shaft);

rl.removeView(label_for_spinner_shaft);

}

} else if (intent.getExtras().getString("Type").equals("230")){

//...

if(rl.findViewById(R.id.param1_spinner_shaft) == null){

rl.addView(spinner_shaft);

rl.addView(label_for_spinner_shaft);

}

}

}

}

};


通过上面的方法,就成功的在两个组件之间进行了通讯!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值