关于Fragment的三个用法

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;
 }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值