首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当我多次单击底部导航项目时,片段再次加载

当我多次单击底部导航项目时,片段再次加载
EN

Stack Overflow用户
提问于 2018-05-28 14:04:43
回答 2查看 685关注 0票数 0

这是我的代码,我已经创建了一个底部导航视图,我连接的项目分别碎片。当我再次单击导航项目时,片段再次加载。

我不知道这里有什么问题。

代码语言:javascript
运行
复制
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        BottomNavigationView bottomNav = findViewById(R.id.bottom_navigation);
        bottomNav.setOnNavigationItemSelectedListener(navListener);

    }
private BottomNavigationView.OnNavigationItemSelectedListener navListener =
            new BottomNavigationView.OnNavigationItemSelectedListener() {

                @Override
                public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                    Fragment SelectedFragment=null;

                    FragmentManager fm=getSupportFragmentManager();
                    FragmentTransaction ft=fm.beginTransaction();
                    ft.commit();


                    switch (item.getItemId()) {
                        case R.id.navigation_home:

                            setTitle("Playing11");
                            HomeFragment fragment = new HomeFragment();
                            ft.replace(R.id.fragment_container, fragment);
                            return true;

                        case R.id.navigation_dashboard:
                            HomeFragment1 fragment1 = new HomeFragment1();
                            ft.replace(R.id.fragment_container, fragment1);

                            return true;
                        case R.id.navigation_notifications:

                            setTitle("Safe11");
                            HomeFragment2 fragment2 = new HomeFragment2();
                            ft.replace(R.id.fragment_container, fragment2);

                            return true;
                        case R.id.navigation_notification:
                            setTitle("More");
                            HomeFragment3 fragment3 = new HomeFragment3();
                            ft.replace(R.id.fragment_container, fragment3);

                            return true;
                    }

                    return false;
                }
            };

}
EN

回答 2

Stack Overflow用户

发布于 2018-05-29 19:34:34

尝试像这样更改代码:

代码语言:javascript
运行
复制
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
    FragmentManager fragmentManager = getSupportFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    switch (item.getItemId()) {
        case R.id.menu_home:

            HomeFragment homeFragment = new HomeFragment();
            fragmentTransaction.replace(R.id.frameContentPlace, homeFragment, "HomeFragment").addToBackStack("HomeFragment");
            break;
        case R.id.menu_profile:

            HomeFragment1 fragment1 = new HomeFragment1();
            fragmentTransaction.replace(R.id.frameContentPlace, fragment1).addToBackStack("HomeFragment1");
            break;
        case R.id.menu_bookings:

            HomeFragment2 fragment2 = new HomeFragment2();
            fragmentTransaction.replace(R.id.frameContentPlace, fragment2).addToBackStack("HomeFragment2");
            break;
    }
    fragmentTransaction.commit();

    return true;
}
票数 1
EN

Stack Overflow用户

发布于 2018-05-28 15:05:15

当你添加片段时,使用标签。所以写吧

代码语言:javascript
运行
复制
ft.replace(R.id.fragment_container, fragment, "MyFragment);

而不是

代码语言:javascript
运行
复制
ft.replace(R.id.fragment_container, fragment);

并检查此片段是否可见,因为不会再次加载此片段

代码语言:javascript
运行
复制
switch (item.getItemId()) 
{
    case R.id.navigation_home:
    HomeFragment fragment = (HomeFragment)getFragmentManager().findFragmentByTag("MyFragment");
    if (fragment != null && !fragment.isVisible()) 
    {
        setTitle("Playing11");
        HomeFragment fragment = new HomeFragment();
        ft.replace(R.id.fragment_container, fragment);
        return true;
    }
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50560044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档