fragment中其他类大同小异,就MainActivity类不同,其中有三种方法:
第一种:
首先要继承FragmentActivity然后利用显隐的方法操作fragment
private RadioGroup radioGroup;
private FragmentManager manager;
private Fragment01 fragment01;
private Fragment02 fragment02;
private Fragment03 fragment03;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取资源ID
radioGroup=(RadioGroup) findViewById(R.id.radiogroup);
manager=getSupportFragmentManager();
//获得Fragment实例
fragment03=(Fragment03) manager.findFragmentById(R.id.fragment01);
fragment02=(Fragment02) manager.findFragmentById(R.id.fragment02);
fragment01=(Fragment01) getSupportFragmentManager().findFragmentById(R.id.fragment03);
radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// TODO Auto-generated method stub
switch (checkedId) {
case R.id.but01:
//显示Fragment01 隐藏Fragment02 03
getSupportFragmentManager().beginTransaction().show(fragment01).hide(fragment02).hide(fragment03).commit();
break;
case R.id.but02:
FragmentTransaction transaction2=manager.beginTransaction();
//显示Fragment02 隐藏Fragment01 03
transaction2.show(fragment02).hide(fragment03).hide(fragment01);
transaction2.commit();
break;
case R.id.but03:
FragmentTransaction transaction3=manager.beginTransaction();
//显示Fragment03 隐藏Fragment02 01
transaction3.show(fragment03).hide(fragment01).hide(fragment02);
transaction3.commit();
break;
default:
break;
}
}
});
}
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第二种:
首先要继承FragmentActivity
private Fragment01 fragment01;
private Fragment02 fragment02;
private FragmentManager manager;
private boolean a=false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//得到FragmentManager管理者
manager=getSupportFragmentManager();
fragment01=new Fragment01();
fragment02=new Fragment02();
}
public void add1(View v) {
// TODO Auto-generated method stub
//开始事务
FragmentTransaction transaction=manager.beginTransaction();
transaction.add(R.id.fragmnnt, fragment01);
//当Fragemnt已经创建了 再去删除
if(a=true){
transaction.remove(fragment02);
}
transaction.commit();
}
public void add2(View v) {
// TODO Auto-generated method stub
//开始事务
FragmentTransaction transaction=manager.beginTransaction();
transaction.add(R.id.fragmnnt, fragment02);
transaction.remove(fragment01);
//改变fragment02的状态 如果创建了 就设置为true
a=true;
transaction.commit();
}
public void replace1(View v){
//开始事务
FragmentTransaction transaction=manager.beginTransaction();
transaction.replace(R.id.fragmnnt, fragment01);
transaction.commit();
}
public void replace2(View v){
//开始事务
FragmentTransaction transaction=manager.beginTransaction();
transaction.replace(R.id.fragmnnt, fragment02);
transaction.commit();
}
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第三种:
首先要继承FragmentActivity
private Fragment01 fragment01;
private Fragment02 fragment02;
private Fragment03 fragment03;
private FragmentManager manager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
manager=getSupportFragmentManager();
fragment01=new Fragment01();
fragment02=new Fragment02();
fragment03=new Fragment03();
}
//加载Fragment01
public void but01(View v){
getfrgment(fragment01, "f1");
}
//加载Fragment02
public void but02(View v){
getfrgment(fragment02, "f2");
}
//加载Fragment03
public void but03(View v){
getfrgment(fragment03, "f3");
}
//弹栈
public void but04(View v){
manager.popBackStack();
}
//加载Fragment将fragment添加到回退栈当中
public void getfrgment(Fragment fragment,String string) {
FragmentTransaction transaction=manager.beginTransaction();
transaction.replace(R.id.fragment, fragment);
//将当前的fragment添加到会退站
transaction.addToBackStack(string);
transaction.commit();
}
这三种方法本人觉得第三种好用一点,但各有优缺点吧,至于XML文件和其他类,想必小崔也不用意义列出了吧
并且还有一点要补充,如果要往Fragment里添加数据可以这样添加
private Button button,but1;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View view=inflater.inflate(R.layout.fragment01, container, false);
button=(Button) view.findViewById(R.id.button);
but1=(Button) view.findViewById(R.id.but1);
//点击button切换Fragment02 进行传值
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
FragmentTransaction transaction=getActivity().getSupportFragmentManager().beginTransaction();
//获取Fragemnt02的实例
Fragmetn02 fragmetn02=new Fragmetn02();
//调取Fragment02 gettext()方法进行传值
fragmetn02.gettext("崔红佳,你傻,你傻");
transaction.replace(R.id.relativ, fragmetn02);
transaction.commit();
}
});
//点击跳转Activity
but1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent it=new Intent(getActivity(),MyActivity.class);
startActivity(it);
}
});
return view;
}