本文主要是介绍Fragment中使用接口的形式实时的传递数据,代替Eventbus,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
由于本人比较懒,技术博客写的也比较少,但是少而精是主要的。
本人公司做的是北斗的高精度产品 ,大致说下项目结构。之前项目中使用蓝牙接收公司自己北斗盒子中的数据包含北斗的GGA
数据(
$GPGGA,025521.62,3447.6103576,N,11332.2176936,E,1,00,1.0,119.751,M,-19.751,M,0.0,*62
)接收到GGA数据后返给差分服务器,然后解析差分数据 数据中包含所接收的北斗卫星数,是否是高精度(指精度在cm级别),经纬度,海拔,仰角,方位角,可视卫星数等数据,这些数据要再首页点的fragment中展示,获取到高精度的经纬度后发送给另外的fragment,此设备是装在车上的,要实时的显示出车的位置。所以就用到frangment间实时的传递数据问题。
第一个想到是用Eventbus。
优点介绍完了,作为一个程序员,没有创新是不行的 ,时间充足的情况下肯定要自己懂手一翻的。
使用接口interface来实现。
首先在Afragment中定义接口,
public interface DataInterface {public void onSetData(String data);
}
需要在Afragment中实现一个方法 初始化DataInterface
@Override public void onAttach(Context context) {super.onAttach(context);try {mdataInterface = (dataInterface) context;} catch (Exception e) {throw new ClassCastException(getActivity() + "must implement OnArticleSelectedListener");} }
然后再需要使用实时传递数据的地方
if (ijwdu[0] != null) {if (ijwdu[0].indexOf("GGA") != -1) { // 查到GGA //发送gga mdataInterface.onSetData(igga[i]);if (ijwdu.length > 13) {if (ijwdu[6] != null) {if (ijwdu[6].equals("4")) {// 差分定位 tv_box_state.setText("高精度");tv_box_state.setTextColor(Color.RED);} else {tv_box_state.setText("普通精度");}}
数据已经发出 Afragment是主MainActivity中的一个,需要在MainActivity中实现这个接口。
public class MainActivity extends BaseActivity implements HomeFragment.dataInterface {然后实现接口里的方法
@Override public void onSetData(String data) {if (BFragment != null) {BFragment.setData(data);} else {BFragment = new TextFragment();BFragment.setData(data);} }}
接下来只管再Bfragment中定义一个和MainActivity中的方法一致就可以了
public void setAllData(String data) {// data就是从AFragment中要实时传递的数据 解析数据即可 parserData(data) }
这篇关于Fragment中使用接口的形式实时的传递数据,代替Eventbus的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!