APP主页面Tab实现(二) Fragment实现Tab

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/l1832876815/article/details/85704000

2.Fragment

动态加载Fragment也可以实现Tab选项卡点击切换,但是不能实现页面的滑动,单纯比较ViewPager来说,不同页面的初始化和监听操作可以在对应的Fragment类内定义,减少了代码的检查维护代价。

2.1 主xml布局中添加FrameLayout
<include layout="@layout/market_header"/>

    <FrameLayout
        android:id="@+id/fl_main"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">
    </FrameLayout>

    <include layout="@layout/market_bottom"/>

对应底部Tab选项卡自己设置
在这里插入图片描述

2.2 创建对应页面xml布局代码
2.3 创建对应布局的Fragment类
public class MainFragment extends Fragment {

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View currentView =  inflater.inflate(R.layout.fragment_mine,container,false);
        //对View的操作
        ...
        
        return currentView;
    }
}
2.4 主Activity中定义对应的Fragment
private Fragment fr_main;
...
2.5 定义Fragment的管理和事务处理对象
FragmentManager fm = getSupportFragmentManager();
FragmentManager fr = getChildFragmentManager();//Fragment嵌套用到,没有嵌套不需要
FragmentTransaction transaction = fm.beginTransaction();
2.6 隐藏所有的Fragment
//在定义事务处理之后使用
private void hideFragment(FragmentTransaction transaction) {
        if(fr_main != null) {
            transaction.hide(fr_main);
        }
        ...
    }
2.7 定义对应Tab按键的点击事件
case R.id.ll_updatings:
     if(fr_updatings == null) {
          fr_updatings = new UpdatingsFragment();//对应Fragment类创建
          transaction.add(R.id.fl_main, fr_updatings);//添加到事务中
     } else {
          transaction.show(fr_updatings);//
     }
     //Tab的点击效果
     ...
     break;
     ...
2.8 在所有点击事件代码后面执行事件的提交
transaction.commit();
2.9 在onCreate中定义默认显示的Fragment

猜你喜欢

转载自blog.csdn.net/l1832876815/article/details/85704000