使用底部导航栏从片段开始活动

时间:2018-12-16 19:58:16

标签: android android-fragments android-activity bottomnavigationview

在我的应用中,我有5个片段。为了在它们之间进行切换,我使用底部的导航栏。

此外,我需要从片段中打开活动,但是当我打开新活动时,它将在每个片段中打开。 (我的意思是在每种情况下都是碎片)

如何在一种情况下打开活动?

我的代码:

 private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
        = new BottomNavigationView.OnNavigationItemSelectedListener() {
    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        Fragment fragment = null;
        switch (item.getItemId()) {
            case R.id.nav_home:
                fragmentManager.beginTransaction().hide(active).show(fragment1).commit();
                active = fragment1;
                return true;
            case R.id.nav_bookmark:
                fragmentManager.beginTransaction().hide(active).show(fragment2).commit();
                active = fragment2;
                return true;
            case R.id.nav_blog:
                fragmentManager.beginTransaction().hide(active).show(fragment3).commit();
                active = fragment3;
                return true;
            case R.id.nav_notification:
                fragmentManager.beginTransaction().hide(active).show(fragment4).commit();
                active = fragment4;
                return true;
            case R.id.nav_account:
                fragmentManager.beginTransaction().hide(active).show(fragment5).commit();
                active = fragment5;
                return true;
        }
      return false;
    }
};

谢谢!

2 个答案:

答案 0 :(得分:1)

这显然是FragmentManager问题,而不是Activity问题。
相反,.hide().show()使用.replace()
作为参考,请参见documentation

答案 1 :(得分:0)

根据Android documentation,活动始终位于当前活动堆栈的顶部。

因此,如果您拥有带有MainActivity和片段的BottomNavigationView,则开始一个新的Activity将打开MainActivityBottomNavigationView之上的活动。因此,不可能仅在BottomNavigationView片段之一中打开活动。

要获得所需的行为,请考虑改用另一个Fragment