如今我要作个Fragment与Fragment之间的通讯小demo。java
前期准备:在Activity里面放进两个fragment: 1和2,再为其各绑定View。web
public class Fragment1 extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment1, null);
return rootView;
}
}
运行是这样的:ide
为两个xml文件都添加TextView和Buttonsvg
接下来就要去找到按钮响应事件,在Fragment1和Fragment2的java文件中写:学习
Fragment1spa
public class Fragment1 extends Fragment {
private TextView tv1;
private Button button1;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment1, null);
button1 = (Button) rootView.findViewById(R.id.button1);//按钮
tv1 = (TextView) rootView.findViewById(R.id.textView1);//文本
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("在Fragment1响应点击按钮事件");
//获得当前Fragment所挂载的Activity,而后获得fragment2.
Fragment2 fragment2 = (Fragment2) getActivity().getFragmentManager().findFragmentById(R.id.fragment2);
fragment2.setText("内容变化了.....");
}
});
return rootView;
}
public void setText(String text) {//定义个修改文本内容的方法
tv1.setText(text);
}
}
Fragment23d
public class Fragment2 extends Fragment {
private TextView tv2;
private Button button2;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment2, null);
button2 = (Button) rootView.findViewById(R.id.button2);//按钮
tv2 = (TextView) rootView.findViewById(R.id.textView2);//文本
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("在Fragment2响应点击按钮事件");
Fragment1 fragment1 = (Fragment1) getActivity().getFragmentManager().findFragmentById(R.id.fragment1);
//获得当前Fragment所挂载的Activity,而后获得fragment1.
fragment1.setText("内容变化了.....");
}
});
return rootView;
}
public void setText(String text) {
tv2.setText(text);
}
}
来看看模拟器code
单击 按钮1:xml
单击 按钮2:blog
这是我在Fragment学习的一个小小的练习。请原谅个人乱码,这个问题我也花了时间去弄,暂时尚未找到问题所在,若是有大神知道能够评论教教我!感谢万分!