android fragment通信,【原创】Android中Activity和Fragment通信

本文详细介绍了Android中Activity和Fragment之间的通信方式,包括Activity调用Fragment方法、Fragment调用Activity方法,以及通过接口响应Fragment中的点击事件。通过实例代码展示了如何在两者间共享数据和事件。

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

活动(Activity)和碎片(Fragment)在Android开发中占着非常重要的作用,每一个开发者想要开发出丰富多彩的Android项目,那就必须要好好了解这两位小伙伴才行。那么接下来,就让皮卡丘带着大家围观下这两位小伙伴的“搞基”之旅吧。

1、Activity使用Fragment中的方法

这个是比较简单的,首先,因为一般情况下Fragment是依附于Activity的,所以在Activity中可以先获取到Fragment的实例,然后就可以直接调用Fragment中的方法了。我们用代码来验证一下,先建一个MyFragment的类,然后在MyFragment中写一个方法:

public void toastShow() {

Log.i("MyFragment", "去吧皮卡丘");

}

然后在activity中创建MyFragment实例对象,并且调用toastShow()方法:

fragment = new MyFragment();

fragment.toastShow();

OK,执行代码,查看日志

AAffA0nNPuCLAAAAAElFTkSuQmCC

方法执行成功!!!可喜可贺可喜可贺

2、Fragment使用Activity中的方法

所谓好基友,当然不会只是Activity使用Fragment的方法。在Fragment中也可以以类似的途径使用Activity的方法:先以getActivity的方式获取到Activity,然后就可以使用方法了(毕竟好基友,相互赠送礼物的方式比较像也是可以理解的嘛)。但是,这里有一个非常重要的东西要理解,那就是:Fragment中getActivity()获取到的对象不能直接用,必须要类型强转!!!(MainActivity)getActivity()这样才可以!

我们在MainActivity中写一个方法

public String getTestString() {

return "成功执行activity中的方法";

}

然后在MyFragment中调用他

case R.id.button1:

String text1 = ((MainActivity)getActivity()).getTestString();

tv_test.setText(text1);

break;

我们打开模拟器,来看看效果

点击之前

AAffA0nNPuCLAAAAAElFTkSuQmCC

点击之后

AAffA0nNPuCLAAAAAElFTkSuQmCC

方法执行成功!!!可喜可贺可喜可贺

3、Activity响应Fragment中的点击事件

终于到了最激动人心,最基情满满的功能了。

我们试想下这样一种场景:在一个Fragment里面按下一个按钮,然后Activity中根据Fragment中传递过来的参数执行相应的方法。这样的场景其实是非常实用的,我们可以通过接口的方式来实现这样的功能。我们在MyFragment中定义这样的接口

public interface OnButton2ClickListener {

public void OnButton2ClickListener(String showText);

}

@Override

public void onAttach(Activity activity) {

// TODO Auto-generated method stub

super.onAttach(activity);

try {

mListener = (OnButton2ClickListener) activity;

} catch (Exception e) {

// TODO: handle exception

throw new

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值