简体   繁体   English

我有底部导航和导航抽屉,我将主屏幕片段设置为默认值

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

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现在的问题是,当我在 Emulator汉堡包图标上运行我的应用程序时,默认情况下显示底部导航和 home Fragment

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如何解决这个问题,这样 navigationDrawer 和底部导航都可以工作

HomeScreenActivity.java主屏幕活动.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 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>

The issue is with your ActivityHomeScreen.xml.问题在于您的 ActivityHomeScreen.xml。 You have to make DrawerLayout as the parent view.您必须将 DrawerLayout 作为父视图。 Inside that you have to place BottomNavigationDrawer and remaining code.在里面你必须放置 BottomNavigationDrawer 和剩余的代码。

And You havent created custom appbar for naviagtion drawer(it now comes with navigation drawer template) Your ActivityHomeScreen.xml should look like this:而且您还没有为导航抽屉创建自定义应用栏(它现在带有导航抽屉模板)您的 ActivityHomeScreen.xml 应如下所示:

ActivityHomeScree.xml 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.现在创建一个布局文件 app_bar_main.xml。 Inside it create a toolbar and place your frameLayout here.在其中创建一个工具栏并将您的 frameLayout 放在此处。

app_bar_main.xml 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.现在 Navdrawer 和 BottomNavigationDrawer 都应该可以工作了。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM