关于fragment和activty的通信个人的总结浅谈

本文探讨了Fragment不能通过构造函数传递参数的原因,因为它具有生命周期。总结了Activity向Fragment传递值的两种方式,包括通过Fragment对象和Bundle,以及Fragment向Activity传递值的方法,如直接获取Activity对象或使用回调接口。示例展示了如何通过Activity对象实现值的传递,从而实现两者之间的通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

           fragment不能使用构造传参数,因为fragment不是普通的类,不能通过new对象的方式,将activty的参数传递给fragment,因为它是一个和activty一样有生命周期的,不是一般的类,fragment的构造是一个无参构造,new一个有参的构造也无法使用。

       关于fragement和activty的通信就有以下两种方式,首先activty向fragment传值可以通过fragment的对象,和bundle值。fragment向activty传值只要是通过获取activty对象或者通过回调接口的方法。

首先我们来看fragment向activty里面传值:fragment可以轻松获取到它当前的activty:activty=getactivty();就ok了.第二种接口回调:

回调有三个要求:一个主类,一个辅助类。第二个是:不确定事件。第三个:

1.fragmemt给activty传值

例如下面这个例子:j就是通过获取activty对象,然后直接可以调它的方法,这样的话,就可以通信传值了

rec=new recycleadapter();
activty= (PlayerActivity) getActivity();//获取关联的activty

//
这是我的fragment和适配器写的一个回调接口
rec.SetOnItemclick(new recycleadapter.Onitemlisten() { @Override public void onitemclick(View view, int position) { Toast.makeText(view.getContext(), list1.get(position).getUrl()+"", Toast.LENGTH_SHORT).show(); activty.setpaly();//在一个事件触发这个这个方法 }});mrycleview.setAdapter(rec);
2.activty给fragment传值
第一种:通过fragment对象,然后在调用方法传递,看代码
请看这个是fragment的代码:设了一个set的方法
public void set(int a)
{
    this.a=a;
}
//这个下面是activty里面的部分代码通信传值核心都在这了
        fragments[0]=new fram_0();
        fragments[1]=new fram_1();

switch (checkedId)
       {
            case R.id.radioButton:
              change(0);
               ((fram_0) fragments[0]).set("我是activry哈哈哈哈");
            //注意这个就是调用它的set方法传值,
2.第二种方法,activty向fragment传值Bundle
activty中的传递:
fragments[0]=new fram_0();
Bundle bundle=new Bundle();
bundle.putString("name","33344445555");
fragments[0].setArguments(bundle);

 
fragment中的接收
 bundle=getArguments();
Log.e("msg",""+bundle.getString("name"));

 
 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值