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();
以上为实现思路,如有错误,欢迎指正