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

时间:2017-09-09 16:08:23

标签: android android-fragments android-activity

我使用底部导航栏创建了一个活动。 我搜索了很多关于它的事情,但现在我不知道如何处理这个问题。 在此之前,我刚刚在用户点击底部导航时启动了另一项活动,但我认为它并不好。

如何在标签之间切换? 我必须使用片段吗?那么' setContentView(int layoutResID)&#39 ;?我怎样才能做到这一点?我很困惑......

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 个答案:

答案 0 :(得分:2)

活动转换总是很昂贵,我们应该只在切换上下文时从一个活动切换到另一个活动。 fragment是活动中UI的一部分。相同的片段可以与多个活动一起使用。就像活动一样,片段有自己的生命周期,setContentView(int layoutResID)可以设置为OnCreate片段中的不同布局。

link详细说明了何时使用活动或片段。

Android developer guide on Fragments

底部导航视图中的

Code path tutorial

答案 1 :(得分:1)

请参阅: -

https://github.com/waleedsarwar86/BottomNavigationDemo

并在

中完成解释

http://waleedsarwar.com/posts/2016-05-21-three-tabs-bottom-navigation/

您将获得一个正在运行的代码,其中包含解释。

答案 2 :(得分:1)

底部导航视图是Android库中引入的导航栏,只需轻按一下即可轻松切换视图。它虽然可以用于几乎任何目的,但最常用于通过单击在片段之间切换。它用于开放活动有点荒谬,因为它忽略了只需轻轻一点切换视图的最重要功能。在这方面有很多好的文章和博客,其中之一是: https://medium.com/@hitherejoe/exploring-the-android-design-support-library-bottom-navigation-drawer-548de699e8e0 希望这能解决你的疑问..

答案 3 :(得分:1)

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;
                    }
                });