我是一只自学java以及安卓2个月的菜鸟程序员,目前暂时学到Fragment,踩了无数个坑~~~
在网上看了无数的fragment与activity交互的文章,对于我这样的java初学者来说,还是有点困难,经过了一天多的困难,终于理解了,分享给大家,我是菜鸟 轻喷。。。
强调一个,从fragment传送数据到activity,需要通过接口回调才能实现,但是activity传送数据到fragment比如在activity内要改变某一个fragment的中某一个控件的值,
可以直接在fragment中定义一个方法
public void setText(String s) { textView.setText(s); }
通过直接调用的方法就可以实现,不需要再用接口回调
对象命.setText(s);
我这里是titlefragment1,contentfrgment1(因为之前写过一次,各种报错,重写了,又懒得新建工程,直接后面+了个1) main3avtivity 三个布局
如上面图片,我要实现的是在titlefrgment点击一个按钮。通过main3activity 传送数据,改天contextfragment中textview中的值
两个button按钮在titlefragment中,右边的textview在contextfrgment中。
参数回调的接口,我想大家可以通过很多网上的文章学习到,我也是看了好久,毕竟基础不好,慢慢理解吧。
在按钮发生事件的fragment即titlefragment中定义一个接口
public interface TitleFragmentOnclickListener { void ChangeValue(String s); }
然后在main3activity中实现你的接口
@Override public void ChangeValue(String s) { contentFragment1= (ContentFragment1) getFragmentManager().findFragmentById(R.id.content_layout); contentFragment1.setText(s); }大家注意了 坑就在这里。
我的两个fragment是动态添加的
<