Как закрыть навигацию снизу или вызвать другое пустое занятие? - PullRequest
1 голос
/ 13 октября 2019

Это одно действие, но я пытаюсь закрыть нижнюю навигацию, когда пользователь выбрал один из фрагментов бокового меню. Пример, когда я нажимаю на свой аккаунт, дно не скрывается.

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 Ответ

2 голосов
/ 13 октября 2019

Поскольку ваш контейнер и 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
}

Это в основном показывает / скрывает свой нижний бар от вашего фрагмента. Сделайте то же самое во всем фрагменте, из которого вы хотите выполнить это действие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...