-1

i have bottom navigation and navigation drawer and i set home screen fragment as default

now problem is when i run my app on Emulator hamburger icon and bottom navigation is showing and home Fragment by default

when i click to hamburger icon its not working

when i remove default home fragment then navigation drawer is working

How to solve this Problem so both navigationDrawer and bottom navigation will work

HomeScreenActivity.java

public class HomeScreenActivity extends AppCompatActivity {

    DrawerLayout mDrawerLayout;
    ActionBarDrawerToggle mToggle;
    BottomNavigationView bottomNavigationView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home_screen);



        bottomNavigationView = findViewById(R.id.homeScreenBottomNavigation);
        bottomNavigationView.setOnNavigationItemSelectedListener(bottomNavListener);
     //   getSupportFragmentManager().beginTransaction().replace(R.id.homeScreenframeLayout, new HomeFragment()).commit();


        mDrawerLayout = findViewById(R.id.HomeScreenDrawerLayout);
        mToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.open, R.string.close);
        mDrawerLayout.addDrawerListener(mToggle);
        mToggle.syncState();
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        if (mToggle.onOptionsItemSelected(item)) {
            return true;

        }

        return super.onOptionsItemSelected(item);
    }

    private BottomNavigationView.OnNavigationItemSelectedListener bottomNavListener = new BottomNavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {

            Fragment selectedFragment = null;

            switch (menuItem.getItemId()) {
                case R.id.bottomNavHome:
                    selectedFragment = new HomeFragment();
                    break;

                case R.id.bottomNavAdd:
                    selectedFragment = new AddFragment();
                    break;

                case R.id.bottomNavSearch:
                    selectedFragment = new SearchFragment();
                    break;
            }

            getSupportFragmentManager().beginTransaction().replace(R.id.homeScreenframeLayout, selectedFragment).commit();
            return true;


        }
    };
}

ActivityHomeScreen.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout

    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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".HomeScreenActivity"

    >
    <android.support.v4.widget.DrawerLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/HomeScreenDrawerLayout"
        >
        <android.support.design.widget.NavigationView
            app:headerLayout="@layout/left_navigation_header"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:id="@+id/navigationView"
            app:menu="@menu/drawer_layout"
            android:layout_gravity="start"
            android:background="#ffff"
            >
        </android.support.design.widget.NavigationView>

    </android.support.v4.widget.DrawerLayout>

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/homeScreenframeLayout"
        >
    </FrameLayout>

    <android.support.design.widget.BottomNavigationView
        android:id="@+id/homeScreenBottomNavigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentBottom="true"
        app:menu="@menu/bottom_navigation"
        android:background="?android:attr/windowBackground"
        >

    </android.support.design.widget.BottomNavigationView>

</RelativeLayout>
Ankur
  • 27
  • 1
  • 7
  • Initialize Fragment selectedFragment = null; globally , and after getSupportActionbar, call your home fragment by default - selectedFragment = new HomeFragment(); – Rajshree Tiwari Apr 25 '19 at 17:35

1 Answers1

0

The issue is with your ActivityHomeScreen.xml. You have to make DrawerLayout as the parent view. Inside that you have to place BottomNavigationDrawer and remaining code.

And You havent created custom appbar for naviagtion drawer(it now comes with navigation drawer template) Your ActivityHomeScreen.xml should look like this:

ActivityHomeScree.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.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_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <include
        layout="@layout/app_bar_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_main"
        app:menu="@menu/activity_main_drawer" />

</android.support.v4.widget.DrawerLayout>

Now create a layout file app_bar_main.xml. Inside it create a toolbar and place your frameLayout here.

app_bar_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout 
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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />

    </android.support.design.widget.AppBarLayout>

    <!--
    Place your frameLayout here
    -->
    
    <android.support.design.widget.BottomNavigationView
        android:id="@+id/navigation"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_gravity="bottom"
        app:menu="@menu/navigation" />

</android.support.design.widget.CoordinatorLayout>

Now both Navdrawer and BottomNavigationDrawer should work.

Ravi Mishra
  • 167
  • 1
  • 7