acvity和fragment通过广播联系
今天我遇到一个问题,就是在activity中需要动态改变fragment中的控件,以前看到过可以在activity中得到fragment实例,然后修改控件;
今天实验了一个新的办法,通过新的办法,就是通过本地广播;
1.在Fragment中编写广播接收器
public class ShouYeFragment extends Fragment {
private ListView listView;
private List<BoWen> list=new ArrayList<BoWen>();
private BoWenAdapter adapter;
private WeiBoDataBase weiBoDataBase=WeiBoDataBase.getInstance(getContext());
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
View view=inflater.inflate(R.layout.shouye_view,container,false);
listView= (ListView) view.findViewById(R.id.bowen_list);
return view;
}
public List<BoWen> getBoWen(){
List<BoWen> list1=new ArrayList<BoWen>();
List<String> bPhone=weiBoDataBase.getBPhone(MainActivity.getYonghuming());
for (String bphone: bPhone){
for(BoWen boWen:weiBoDataBase.getBoWen(bphone)){
list1.add(boWen);
}
}
return list1;
}
public class ShouYeBroadCastReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
list=getBoWen();
adapter=new BoWenAdapter(getContext(),R.layout.bowen_view,list);
listView.setAdapter(adapter);
}
}
}
在activity中注册发送本地广播
public class MainActivity extends FragmentActivity {
private ShouYeFragment shouYeFragment;
private FragmentManager manager;
private FragmentTransaction transaction;
private LocalBroadcastManager broadcastManager;
private ShouYeFragment.ShouYeBroadCastReceiver shouYeBroadCastReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_view);
shouYeFragment=new ShouYeFragment();
manager=getSupportFragmentManager();
broadcastManager = LocalBroadcastManager.getInstance(this);
shouYeBroadCastReceiver=shouYeFragment.new ShouYeBroadCastReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.intent.action.ShouYe_BROADCAST");
broadcastManager.registerReceiver(shouYeBroadCastReceiver, intentFilter);
transaction=manager.beginTransaction();
transaction.add(R.id.zhuyaoneirong_layout,shouYeFragment);
transaction.addToBackStack(null);
transaction.commit();
init();
}
private void init(){
Intent intent1=new Intent("android.intent.action.ShouYe_BROADCAST");
broadcastManager.sendBroadcast(intent1);
}
@Override
protected void onDestroy() {
super.onDestroy();
broadcastManager.unregisterReceiver(shouYeBroadCastReceiver);
}
}
acvity和fragment通过广播联系的更多相关文章
- Fragment的广播消息接收
这种方式不用在配置文件加东西 广播注册,可以写在Activity(onCreate),也可以写在Fragment(onActivityCreated)里. LocalBroadcastManager ...
- acitivity 和fragment 通信,使用广播来传递信息的问题
使用广播来传递信息时 如果 acitivity 给 太快给 fragment 发送广播,fragment 收不到 使用回调的方式来解决
- Service 广播 到Fragment
//Fragment public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Sys ...
- Fragment和Activity之间通过广播的方式传递数据
四大组件之间传递数据可以用广播,但是有次面试官说太重了,用eventbus代替.下面的广播传递数据方法仅当学习参考. 1.管理类 /** * 广播管理类:注册广播.注销广播.发送广播 * @autho ...
- 心情日记app总结 数据存储+服务+广播+listview+布局+fragment+intent+imagebutton+tabactivity+美工
---恢复内容开始--- 结果截图如下: 第一张图是程序主界面,主要是显示记事列表的一些个事件.旁边的侧拉框是自己登陆用的.可以设置密码.可以查看反馈与关于等信息. 点击第一张图片下方的图标,会显示不 ...
- Android Fragment间的广播消息接收
这种方式不用在配置文件加东西,我比较喜欢. 广播注册,可以写在Activity(onCreate),也可以写在Fragment(onActivityCreated)里. LocalBroadcastM ...
- Fragment使用LocalBroadcastManager接收广播消息
这种方式不用在配置文件加东西 变量声明 LocalBroadcastManager broadcastManager; IntentFilter intentFilter; BroadcastRece ...
- 用Broadcast广播在activity之间、fragment之间、activity和fragment之间相互传数据
例如:A界面要收到B界面的更变信息 一.A界面注册广播 private static final String INTENT_BROADCAST = "android.intent.acti ...
- android Broadcast广播消息代码实现
我用的是Fragment , 发送写在一个类中,接收写在另外一个类的内部类中.代码动态实现注册. 代码: myReceiver = new zcd.netanything.MyCar.myReceiv ...
随机推荐
- JAVASE02-Unit09: 多线程基础
Unit09: 多线程基础 * 线程 * 线程用于并发执行多个任务.感官上像是"同时"执行 * * 创建线程有两种方式. * 方式一: * 继承线程并重写run方法来定义线程要执 ...
- 微信支付开发(7) 收货地址共享接口V2
关键字:微信公众平台 JSSDK 发送给朋友 收货地址共享接口 openAddress 作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/p/weixin-open ...
- 后移动互联网时代:到底还要不要开发一个App?
后移动互联网时代,到底是什么样的一个时代? 首先,后移动互联网时代中,产生头部应用的几率变小了,像微信这样巨头式的App很难在产生第二个.其次,后移动互联网时代,物联网发展迅速,所有的智能硬件都需要一 ...
- Win8电脑蓝屏并提示dpc_watchdog_violation
用尽系统自带的工具均无法恢复,F8能进系统.后来使用如下方法解决了 这种错误情况的发生可能是由于 iastor.sys 驱动没有完全兼容 Windows 8系统所造成的. 微软正在研究一种可行方案,来 ...
- rplidar测试
以下在虚拟机中完成的(ubuntu12.04-amd64-ros-exbot-h2-140520). 进入catkin_ws,下载代码: cd ~/catkin_ws/src/ git clone h ...
- varnish4.1 配置文件default.vcl
varnish4.1 配置文件default.vcl # This .x VCL file vcl 4.0; backend default { .host = "127.0.0.1&quo ...
- CentOS进不了mysql
在tty1里输入命令:“mysql -uroot -p+密码” 可以正常进入mysql,但在tty2里就不行了, 提示:Error 1045(28000): Access denied for use ...
- TIJ——Chapter Seven:Reusing Classes
Reusing Classes 有两种常用方式实现类的重用,组件(在新类中创建存在类的对象)和继承. Composition syntax Every non-primitive object has ...
- Babel下的ES6兼容性与规范
前端开发 Babel下的ES6兼容性与规范 ES6标准发布后,前端人员也开发渐渐了解到了es6,但是由于兼容性的问题,仍然没有得到广泛的推广,不过业界也用了一些折中性的方案来解决兼容性和开发体系问 ...
- CentOS 7 启动、重启、chkconfig等命令已经合并为systemctl
CentOS 7系统服务启动.重启.设置服务启动项命令以合并为,systemctl . 现在用service 或/etc/init.d/命令,重启,重新启动,停止等没效果,因为命令合并为systemc ...