点击切换fragment(不用viewpager)

该博客介绍了如何在Android应用中不使用ViewPager,而是通过监听TabBar的点击事件,结合FragmentManager和FragmentTransaction动态切换FrameLayout中的Fragment。分别创建并管理了三个Fragment:InformationFragment、TopicFragment和MineFragment,并在Tab被选中时显示相应的Fragment。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

private FrameLayout frame_layout;
private JPTabBar tabbar;
private InformationFragment informationFragment;
private TopicFragment topicFragment;
private MineFragment mineFragment;
@Titles
private static final String[] mTitles = {"资讯", "话题", "我的"};

@SeleIcons
private static final int[] mSeleIcons = {R.mipmap.zixun, R.mipmap.huati, R.mipmap.wode};

@NorIcons
private static final int[] mNormalIcons = {R.mipmap.zixun_hui, R.mipmap.huati_hui, R.mipmap.wode_hui};
private FragmentManager fragmentManager;
private FragmentTransaction fragmentTransaction;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_data_load);
    initView();
    initData();
    initListener();
}

@Override
public void onAttachFragment(Fragment fragment) {
    super.onAttachFragment(fragment);
    if (fragment instanceof InformationFragment) {
        informationFragment = (InformationFragment) fragment;
    }
}

private void initListener() {
    tabbar.setTabListener(new OnTabSelectListener() {
        @Override
        public void onTabSelect(int index) {
            FragmentTransaction transaction = fragmentManager.beginTransaction();
            transaction.hide(informationFragment);
            transaction.hide(topicFragment);
            transaction.hide(mineFragment);

            switch (index) {
                case 0:
                    if (informationFragment.isAdded()) {
                        transaction.show(informationFragment);
                    } else {
                        transaction.add(R.id.frame_layout, informationFragment);
                    }
                    break;
                case 1:
                    if (topicFragment.isAdded()) {
                        transaction.show(topicFragment);
                    } else {
                        transaction.add(R.id.frame_layout, topicFragment);
                    }
                    break;
                case 2:
                    if (mineFragment.isAdded()) {
                        transaction.show(mineFragment);
                    } else {
                        transaction.add(R.id.frame_layout, mineFragment);
                    }
                    break;
            }
            transaction.commit();
        }

        @Override
        public boolean onInterruptSelect(int index) {
            return false;
        }
    });
}

private void initData() {
    informationFragment = new InformationFragment();
    topicFragment = new TopicFragment();
    mineFragment = new MineFragment();

    ArrayList<Fragment> fragmentList = new ArrayList<>();
    fragmentList.add(informationFragment);
    fragmentList.add(topicFragment);
    fragmentList.add(mineFragment);

    fragmentManager = getSupportFragmentManager();
    fragmentTransaction = fragmentManager.beginTransaction();
    fragmentTransaction.add(R.id.frame_layout, informationFragment).commit();

}

private void initView() {
    frame_layout = (FrameLayout) findViewById(R.id.frame_layout);
    tabbar = (JPTabBar) findViewById(R.id.tabbar);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值