如何关闭底部导航或调用另一个空活动?

时间:2019-10-13 14:02:21

标签: java android xml

这是一项活动,但是当用户选择侧面菜单片段之一时,我尝试关闭底部导航。例如,当我单击我的帐户时,底部没有隐藏。

enter image description here enter image description here

       @Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
    switch (menuItem.getItemId()){
        case R.id.nav_account:
            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                    new AccountFragment()).commit();
            break;
        case R.id.nav_support:
            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                    new SupportFragment()).commit();
            break;
        case R.id.nav_aboutus:
            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                    new AboutusFragment()).commit();
            break;
        case R.id.nav_logout:
            firebaseAuth.signOut();
            startActivity(new Intent(getApplicationContext(),Signin.class));
            break;

    }

    mDrawerlayout.closeDrawer(GravityCompat.START);
    return true;
}

我希望简单的代码或添加其他活动?

这是我的布局

    <androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".sidemenu">

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <FrameLayout
        android:id="@+id/fragment_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@id/bottom_navigation"/>

    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/bottom_navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        app:menu="@menu/bottom_navigation"
        android:background="?android:attr/windowBackground"/>

</RelativeLayout>

<com.google.android.material.navigation.NavigationView
    app:headerLayout="@layout/header"
    android:id="@+id/nav_View"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:background="@color/white"
    app:itemTextColor="@color/Black"
    app:itemIconTint="@color/gray"
    app:menu="@menu/drawermenu"
    android:layout_gravity="start">

</com.google.android.material.navigation.NavigationView>

也许在导航或底部导航中添加了一些代码

1 个答案:

答案 0 :(得分:2)

由于您的容器和BottomNavigation在相同的活动布局中,并且您正在使用容器作为片段。

创建一个界面

public interface IBottomBarListener{
public void showBottomBar();
public void hideBottomBar()
}

在您的活动中实现此接口,并覆盖这两种方法。

    public void showBottomBar(){
    // make your bottom bar visibility visible
    }

public void hideBottomBar(){
    // make your bottom bar visibility gone
    }

现在在您的片段中声明全局变量

public IBottomBarListener listener;

现在使用onAttach()方法,初始化您的监听器

listener = (IBottomBarListener)context

现在在onCreateView()中,调用

listener.hideBottomBar()  // this will hide your bottombar

同样在onDetach()方法中,如果您想再次显示底栏,

onDetach(){
listener.showBottomBar() // this will show your bottombar
}

这基本上是在片段中显示/隐藏您的底栏。因此,在您要执行此操作的所有片段中都执行相同操作。