Frangment的两种切换方式
幻想一下 “QQ切换页面” 和 “微信切换页面” 对没错就是这两种:
QQ切换页面:Fragment实现标签页切换
微信切换页面:Fragment+ViewPager实现标签页联动
秀给朕上代码: 。。。好嘞
戳这里-------》Fragment第三种实现方式,静态工厂。。。
Fragment实现标签页切换 :
// 动态加载fragment
// 获取fragment管理者
manager = getFragmentManager();
// 开启事务
FragmentTransaction transaction = manager.beginTransaction();
frag_01 = new Frag_01();
frag_02 = new Frag_02();
frag_03 = new Frag_03();
frag_04 = new Frag_04();
// 把fragment对象加到事物中
transaction.add(R.id.framelayout, frag_01);
transaction.add(R.id.framelayout, frag_02);
transaction.add(R.id.framelayout, frag_03);
transaction.add(R.id.framelayout, frag_04);
// 控制显示隐藏
transaction.show(frag_01).hide(frag_02).hide(frag_03).hide(frag_04);
// 替换(帧布局id,要换成fragment对象)
// transaction.replace(R.id.framelayout, frag_01);
// 提交
transaction.commit();
Fragment实现标签页切换 :(布局文件写法)
<FrameLayout
android:id="@+id/framelayout"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<RadioButton
android:id="@+id/radio0"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:drawableTop="@drawable/selector"
android:gravity="center"
android:text="消息" />
<RadioButton
android:id="@+id/radio1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:drawableTop="@drawable/selector"
android:gravity="center"
android:text="联系人" />
<RadioButton
android:id="@+id/radio2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:drawableTop="@drawable/selector"
android:gravity="center"
android:text="看点" />
<RadioButton
android:id="@+id/radio3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:drawableTop="@drawable/selector"
android:gravity="center"
android:text="动态" />
</RadioGroup>
Fragment+ViewPager实现标签页联动 :
{
//控件
pager = findViewById(R.id.pager);
radioGroup = findViewById(R.id.radiogroup);
//页面
final ArrayList<Fragment> list = new ArrayList<>();
list.add(new HomeFragment());
list.add(new VideoFragment());
list.add(new MyFragment());
//适配器
pager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int i) {
return list.get(i);
}
@Override
public int getCount() {
return list.size();
}
});
//活动监听
pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i1) {
}
@Override
public void onPageSelected(int i) {
radioGroup.check(radioGroup.getChildAt(i).getId());
}
@Override
public void onPageScrollStateChanged(int i) {
}
});
//按钮选页面
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.radio0:
pager.setCurrentItem(0);
break;
case R.id.radio1:
pager.setCurrentItem(1);
break;
case R.id.radio2:
pager.setCurrentItem(2);
break;
}
}
});
}
Fragment+ViewPager实现标签页联动 : (布局文件写法)
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1" />
<RadioGroup
android:id="@+id/radiogroup"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RadioButton
android:id="@+id/radio0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:checked="true"
android:drawableTop="@drawable/btu_selector"
android:gravity="center"
android:text="首页"
android:textSize="20sp" />
<RadioButton
android:id="@+id/radio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:drawableTop="@drawable/btu_selector"
android:gravity="center"
android:text="小视频"
android:textSize="20sp" />
<RadioButton
android:id="@+id/radio2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:drawableTop="@drawable/btu_selector"
android:gravity="center"
android:text="我的"
android:textSize="20sp" />
</RadioGroup>