您的位置:首页 > 其它

Activity与Fragment,Fragment与Fragment之间的通信

2016-11-04 22:41 381 查看
1 Activity与Fragment直接通信的基础

(1)第一点: Fragment可以调用getActivity()方法很容易的得到它所在的activity的对象,然后就可以查找activity中的控件们(findViewById())

例如:ViewlistView =getActivity().findViewById(R.id.list);

(2)第二点:activity也可以通过FragmentManager的方法查找它所包含的frament们

例如:ExampleFragment fragment =(ExampleFragment)getFragmentManager().findFragmentById(R.id.example_fragment

(一) Fragment与Fragment之间的通信----利用set/getArgments
注意:Fragment创建的时候只能是无参构造器来创建,不可以是其他的构造器

(1)第一步:在fragment1里面写public staticFragment01
newInstance(参数类型)

public staticFragment01 newInstance(intresId)
{ // 参数类型是int型的

Fragment01 fragment01 =newFragment01();
// 创建fragment对象

Bundle args =newBundle();
args.putInt("image",
resId); // 方法传递的数据放在bundle里面

fragment01.setArguments(args); // 存入到setArguments(args)里面
returnfragment01;
}

(2)第二步:在fragment2的onCreateView()里面进行数据的提取

if(getArguments!=null){

intres = getArguments().getInt("image");
mImgResult.setImageResource(res);

}

注意:以上的通信传递,只是同一个container下的情况

(二)Fragment与Fragment之间的通信---通过获取实例的方式

Fragment01向 Fragment02传递数据

第一步:Fragment02里面写如下的代码,给TextView加数据

public voidshowName(String name) {
mTvShow.setText(name);
}

第二步:在Fragment01里面初始化Fragment02的对象

mFragment02= (Fragment02)getActivity().getSupportFragmentManager().findFragmentByTag("RIGHT");

第三步:在Fragment01里面加监听,然后来调用Fragment02的方法,对Fragment02里面的数据进行更新

mFragment02.showName(mStrings[index]);

(三)Fragment与Fragment之间的通信----接口实现

注意:貌似回掉机制的原理,首先是Fragment1里面的数据发送到Fragment2里面来

(1)第一步:在fragment1定义监听的接口

public interface Callback{

public void showName(String name);

}

(2)第二步:fragment2实现这个接口,复写里面的方法

(3)第三步:fragment1里面获取fragment2的实例,获取复写的方法,完成数据的传递
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  通信 对象 控件