android fragment 底部菜单栏,安卓开发-底部导航栏切换Fragment进行显示

内容纲要

底部导航栏切换Fragment进行显示

创建Fragment对象

通常会有多个Fragment用于切换

用Fragment[] fragments保存为集合

private FrameLayout frame_home;

private Fragment[] fragments;

private HomeFragment homeFragment;

private int lastfragment = 0;

显示Fragment对象

加载Fragment视图

private void initView() {

//加载Fragment

homeFragment = new HomeFragment();

//Fragments集合

fragments = new Fragment[]{homeFragment};

//加载FrameLayout布局

frame_home = (FrameLayout) findViewById(R.id.frame_home);

//设置fragment到布局

getSupportFragmentManager().beginTransaction().replace(R.id.frame_home,homeFragment).show(homeFragment).commit();

}

切换Fragment

管理多个Fragment并切换

切换到指定Fragment

//切换fragment

private void switchFragment(int lastfragment, int index) {

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

//隐藏上个Fragment

transaction.hide(fragments[lastfragment]);

if (!fragments[index].isAdded()) {

transaction.add(R.id.frame_home, fragments[index]);

}

transaction.show(fragments[index]).commitAllowingStateLoss();

}

底部导航栏点击事件监听器

//底部导航栏点击响应事件

private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener

= new BottomNavigationView.OnNavigationItemSelectedListener() {

@Override

public boolean onNavigationItemSelected(@NonNull MenuItem item) {

switch (item.getItemId()) {

case R.id.nav_home:

if (lastfragment != 0) {

switchFragment(lastfragment, 0);

lastfragment = 0;

}

ToastUtil.showToast(getApplicationContext(), "点击了nav_home");

return true;

case R.id.nav_zoom:

// if (lastfragment != 1) {

// switchFragment(lastfragment, 1);

// lastfragment = 1;

// }

ToastUtil.showToast(getApplicationContext(), "点击了nav_zoom");

return true;

case R.id.nav_user:

ToastUtil.showToast(getApplicationContext(), "点击了nav_user");

return true;

default:

break;

}

return false;

}

};

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值