移动开发-Android-tab效果之Fragment-1



本文借鉴了网上众大神的思路、代码,通过整合,归纳出Android移动端Tab切换效果的集中实现方式,包括Viewpager+Fragment、FragmentTransaction以及传统方式等多种实现路径,还有多种实现后的效果,以此希望和众多初学者一同进步、交流.因此文章虽为自己归纳,但内容不是完全原创;虽然内容借鉴了众大神的,但是归纳和整理,皆为自己完成,这是第一篇博客,后续的归纳整理会陆续呈上来

通过FragmentTransaction实现Fragment切换

主Activity


public class MainActivity extends FragmentActivity implements OnClickListener{

 private ViewPager viewPager;
 private ArrayList<Fragment> fragments = new ArrayList<>();
 private ImageView iv1;
 private ImageView iv2;
 private TitleFragment tFragment;
 private ContentFragment cFragment;
 private ContentFragment2 cFragment2;
 private ImageView iv3;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  requestWindowFeature(Window.FEATURE_NO_TITLE);
  setContentView(R.layout.activity_main);

  initview();
  setDefaultFragment();
 }

 private void setDefaultFragment() {
  FragmentManager fm = getSupportFragmentManager();
  FragmentTransaction ft = fm.beginTransaction();
  ft.replace(R.id.id_fragment_content, cFragment2);
  ft.commit();
 }

 private void initview() {
  iv1 = (ImageView)findViewById(R.id.imageView1);
  iv2 = (ImageView)findViewById(R.id.imageView2);
  iv3 = (ImageView)findViewById(R.id.imageView3);
  //  viewPager = (ViewPager)findViewById(R.id.viewPager);
  //  FragmentAdapter adapter = new FragmentAdapter(getSupportFragmentManager());
  tFragment = new TitleFragment();
  cFragment = new ContentFragment();
  cFragment2 = new ContentFragment2();
  //  fragments.add(tFragment);
  //  fragments.add(cFragment);
  //  viewPager.setAdapter(adapter);
  iv1.setOnClickListener(this);
  iv2.setOnClickListener(this);
  iv3.setOnClickListener(this);
 }

 class FragmentAdapter extends FragmentPagerAdapter {

  public FragmentAdapter(FragmentManager fm) {
   super(fm);
   // TODO Auto-generated constructor stub
  }

  @Override
  public Fragment getItem(int arg0) {
   // TODO Auto-generated method stub
   return fragments.get(arg0);
  }

  @Override
  public int getCount() {
   // TODO Auto-generated method stub
   return fragments.size();
  }

 }
 @Override
 public void onClick(View v) {
  FragmentManager fm = getSupportFragmentManager();
  FragmentTransaction ft = fm.beginTransaction();
  switch(v.getId()) {
  case R.id.imageView2:
//   ft.remove(cFragment);
//   ft.add(R.id.id_fragment_content, tFragment);
   removeFragment();
   ft.replace(R.id.id_fragment_content, tFragment);
   break;
  case R.id.imageView1:
//   ft.remove(tFragment);
//   ft.add(R.id.id_fragment_content, cFragment);
   removeFragment();
   ft.replace(R.id.id_fragment_content, cFragment);
   break;
  case R.id.imageView3:
   removeFragment();
   ft.replace(R.id.id_fragment_content, cFragment2);
   break;
  }
  ft.commit();
 }

 private void removeFragment() {
  FragmentManager fManager = getSupportFragmentManager();
  FragmentTransaction transaction = fManager.beginTransaction();
  transaction.remove(cFragment);
  transaction.remove(cFragment2);
  transaction.remove(tFragment);
 }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值