首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在使用导航组件实现的BottomNavigationView中,每次在片断之间切换时片断都会重新启动

。这是因为BottomNavigationView默认使用的是FragmentTransaction的replace方法来切换片断,该方法会销毁当前片断并创建新的片断实例。

为了避免片断重新启动,可以使用FragmentTransaction的hide和show方法来切换片断。具体步骤如下:

  1. 在Activity中创建BottomNavigationView,并设置相应的菜单项和片断容器。
  2. 在Activity中创建片断实例,并使用FragmentTransaction的add方法将片断添加到片断容器中。
  3. 在BottomNavigationView的OnNavigationItemSelectedListener中,根据菜单项的选择,使用FragmentTransaction的hide和show方法来切换片断的可见性。

这样,当切换菜单项时,片断不会重新创建,而是保持之前的状态。

下面是一个示例代码:

代码语言:txt
复制
// 创建BottomNavigationView
BottomNavigationView bottomNavigationView = findViewById(R.id.bottom_navigation_view);

// 设置菜单项点击监听器
bottomNavigationView.setOnNavigationItemSelectedListener(item -> {
    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
    switch (item.getItemId()) {
        case R.id.menu_item1:
            // 使用hide和show方法切换片断的可见性
            transaction.hide(fragment2);
            transaction.show(fragment1);
            break;
        case R.id.menu_item2:
            transaction.hide(fragment1);
            transaction.show(fragment2);
            break;
    }
    transaction.commit();
    return true;
});

// 创建片断实例
Fragment1 fragment1 = new Fragment1();
Fragment2 fragment2 = new Fragment2();

// 将片断添加到片断容器中
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.add(R.id.fragment_container, fragment1);
transaction.add(R.id.fragment_container, fragment2);
transaction.commit();

在上述示例中,R.id.bottom_navigation_view是BottomNavigationView的ID,R.id.fragment_container是片断容器的ID。Fragment1和Fragment2分别是要切换的两个片断。

这样,使用导航组件实现的BottomNavigationView在切换片断时就不会重新启动片断,而是保持之前的状态。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券