【1】MainActivty 中动态注入Fragment设置tag
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//[1]获取Fragment的管理者
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction beginTransaction = fragmentManager.beginTransaction();
//[2]动态替换
beginTransaction.replace(R.id.ll1, new Demo1Fragment(),"f1");
beginTransaction.replace(R.id.ll2, new Demo2Fragment(), "f2");
//[3]最后记得commit
beginTransaction.commit();
}
}
【2】可以通过getActivity().getFragmentManager().findFragmentByTag("f2"); 获取要调用的实例对象
//fragment代表Activity的一部分
public class Demo1Fragment extends Fragment {
//在这个方法里面初始化Fragment要展示的内容 相当于Activity的onCreate方法
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//[1]通过一个布局填充器 把一个布局转换成一个view对象
View view = inflater.inflate(R.layout.fragment_demo1, null);
//[2]找到按钮 设置点击事件
view.findViewById(R.id.btn_update).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//[3]修改另外一个Fragment的的textview 的内容
Demo2Fragment demo2Fragment = (Demo2Fragment) getActivity().getFragmentManager().findFragmentByTag("f2");
demo2Fragment.updateTextView("哈哈");
}
});
return view;
}
}
【3】调用Fragment对外提供的方法
//fragment代表Activity的一部分
public class Demo2Fragment extends Fragment {
private TextView tv_content;
//在这个方法里面初始化Fragment要展示的内容
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//[1]通过一个布局填充器 把一个布局转换成一个view对象
View view = inflater.inflate(R.layout.fragment_demo2, null);
tv_content = (TextView) view.findViewById(R.id.tv_content);
return view;
}
//更新textview的方法
public void updateTextView(String content){
tv_content.setText(content);
}
}