Fragment自学 动态加载Fragment 以及如何获取动态加载的fragment中的控件

本文是一位自学Java和Android的初级开发者分享的关于Fragment动态加载及如何在Activity与Fragment间进行数据交互的经验。作者强调,从Fragment向Activity传递数据需要通过接口回调,而Activity向Fragment传递数据则可以直接调用Fragment内部的方法。文中以一个具体实例说明了在TitleFragment中点击按钮,通过Main3Activity更新ContentFragment中TextView值的过程,并指出了一些常见错误。

我是一只自学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是动态添加的

<
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值