Android Activity和Fragment之间的常规通信方式

Activity和Fragment之间是可以相互传递数据的,这是无需置疑,而且还可以使用其他 特别的方式达到通信效果,如:广播、EventBus ,但这无疑增加了代码的阅读难度。

Activity和Fragment原本就有提供相互通信的方法,如下:
1、Activity 直接通过FragmentManager加载Framgment。

//Activity里添加Fragment
getSupportFragmentManager().beginTransaction().add(R.id.frameLayout,new BlankFragment(),"blankFragment").commitNowAllowingStateLoss();

//Activity调用Fragment,可以通过getSupportFragmentManager().findFragmentByTag得到Fragment的对象
 BlankFragment fragment= (BlankFragment) getSupportFragmentManager().findFragmentByTag("blankFragment");
        fragment.sendFragmentToast();


//Fragment调用Activity
((Main2Activity)getActivity()).sendActiviyToast();

2、Activity通过ViewPager加载Fragment

    //Activity调用Fragment, adapter为ViewPager的Adapter(FragmentPagerAdapter/FragmentStatePagerAdapter)
    BlankFragment fragment = (BlankFragment)adapter.instantiateItem(ViewPager对象,Fragment索引位置);
    fragment.sendFragmentToast();

//Activity获取当前ViewPager显示的Fragment
//在Adapter里面重写该方法
Fragment mCurrentFragment;
 @Override
    public void setPrimaryItem(ViewGroup container, int position, Object object) {
    mCurrentFragment=(BlankFragment)object
        super.setPrimaryItem(container, position, object);
    }

//Fragment调用Activity
((Main2Activity)getActivity()).sendActiviyToast();

以上为实现思路,如有错误,欢迎指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值