使用底部导航切换活动/片段

7

我创建了一个带有底部导航栏的活动。我查询了很多关于它的事情,但现在我不知道应该如何处理它。

之前,当用户点击底部导航时,我只是启动另一个活动,但我认为这样做不好。

我应该如何在选项卡之间切换?我需要使用片段吗?'setContentView(int layoutResID)'又是怎么回事呢?我感到困惑...

private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener = new BottomNavigationView.OnNavigationItemSelectedListener() {

    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()) {
            case R.id.navigation_home:
                return true;
            case R.id.navigation_dashboard:
                startActivity(dashboardActivity);
                return true;
            case R.id.navigation_notifications:
                startActivity(dashboardActivity);
                return true;
        }
        return false;
    }

};

非常感谢您的帮助 - 我希望您明白我的意思。
4个回答

3
活动转换通常是比较昂贵的,我们只有在切换上下文时才应该从一个活动切换到另一个活动。一个“fragment”是活动中UI的一部分。同一个“fragment”可以用于多个活动。就像活动一样,“fragment”有它自己的生命周期,并且可以在“fragment”的“OnCreate”中设置不同布局的“setContentView(int layoutResID)”。
这个链接更详细地解释了何时使用活动或者“fragment”: link.
“Android开发人员指南:Fragments”介绍了“Fragments”的详细信息: Android developer guide on Fragments.
“Code path tutorial”教程则介绍了底部导航栏的使用: Code path tutorial.

2

1

0
bottomNavigationView.setOnNavigationItemSelectedListener
                (new BottomNavigationView.OnNavigationItemSelectedListener() {
                    @Override
                    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                        Fragment selectedFragment = null;
                        switch (item.getItemId()) {
                            case R.id.action_item1:
                                selectedFragment = ItemOneFragment.newInstance();
                                FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
                                transaction.replace(R.id.frame_layout, selectedFragment);
                                transaction.commit();
                                // selectedFragment.getChildFragmentManager().beginTransaction();
                                break;

                            case R.id.action_item2:
                                selectedFragment = ItemTwoFragment.newInstance();
                                FragmentTransaction transactiona = getSupportFragmentManager().beginTransaction();
                                transactiona.replace(R.id.frame_layout, selectedFragment);
                                transactiona.commit();
                              //  selectedFragment = ItemThreeFragment.newInstance();
                                break;

                            case R.id.action_item3:
                            //  selectedFragment = ItemOneFragment.newInstance();
                                Intent intent=new Intent(MainView.this, YoutActivityLive.class);
                                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                                startActivity(intent);
                               // selectedFragment = ItemTwoFragment.newInstance();
                                break;


                            case R.id.action_item5:
                                selectedFragment = ItemOneFragment.newInstance();
                                FragmentTransaction transactionb = getSupportFragmentManager().beginTransaction();
                                transactionb.replace(R.id.frame_layout, selectedFragment);
                                transactionb.commit();
                               // selectedFragment = ItemFiveFragment.newInstance();
                                break;
                        }

                        return true;
                    }
                });

来自评论:欢迎来到Stack Overflow!请不要仅回答源代码。尝试提供关于您的解决方案如何工作的良好描述。请参阅:如何编写一个好的答案?。谢谢。 - sɐunıɔןɐqɐp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接