安卓任意两个或多个Fragment之间的交互与刷新界面

发布时间:2017-1-19 6:12:38 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"安卓任意两个或多个Fragment之间的交互与刷新界面 ",主要涉及到安卓任意两个或多个Fragment之间的交互与刷新界面 方面的内容,对于安卓任意两个或多个Fragment之间的交互与刷新界面 感兴趣的同学可以参考一下。

安卓任意两个或多个Fragment之间的交互与刷新界面

  平时项目中遇到一个问题:在子fragment中刷新父fragment的界面,通俗的说也就是在任何一个fragment中来刷新另一个fragment。大家都知道activity和fragment之间的交互可以通过接口回调和bundle来实现,但是这种fragment之间的实时刷新就有些困难了。

原创作品,未经允许禁止转载,转载请注明来自:http://www.cnblogs.com/jiangbeixiaoqiao/

  经过上网查阅,目前网上还没有比较靠谱全面有效的方式来实现,基本都是通过activity作为中间媒介进行传值,但是这会遇到一个问题,就是activity—>fragment传值时fragment是都新加的(add或者repalce),并不是之前就存在的fragment,所以与我所讲的不是一回事。这里讲的是所有的fragment都是加载完毕的,存在回退栈中,来实时刷新回退栈中的fragment。话不多说,上代码,主要实现原理是通过安卓的广播机制来实现的。

首先,在需要进行刷新更新UI的fragment中注册广播接收器:

  /**     * 注册广播接收器     */    private void registerReceiver() {        broadcastManager = LocalBroadcastManager.getInstance(getActivity());        IntentFilter intentFilter = new IntentFilter();        intentFilter.addAction("jerry");        broadcastManager.registerReceiver(mAdDownLoadReceiver, intentFilter);    }    //原创作品,未经允许禁止转载,转载请注明来自:http://www.cnblogs.com/jiangbeixiaoqiao/    private BroadcastReceiver mAdDownLoadReceiver = new BroadcastReceiver() {        @Override        public void onReceive(Context context, Intent intent) {            String change = intent.getStringExtra("change");            if ("yes".equals(change)) {
          // 这地方只能在主线程中刷新UI,子线程中无效,因此用Handler来实现
new Handler().post(new Runnable() { public void run() {
            //在这里来写你需要刷新的地方 //例如:testView.setText(
"恭喜你成功了"); }

上一篇:它们无怨无悔,一如既往,前赴后继
下一篇:附加数据库报错

相关文章

相关评论