Реализация BottomNavigationView с помощью Viewpager и TabLayout - PullRequest
0 голосов
/ 12 июля 2019

Я новичок в разработке для Android, и я пытаюсь реализовать объединение интерфейса tabLayout, viewpager и bottomNavigationView и. Я закончил с некоторыми «рабочий» код, но я чувствую, что это не лучший подход.

 @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        appBarLayout = (AppBarLayout) findViewById(R.id.appBarLayout);
        bottomNav = (BottomNavigationView) findViewById(R.id.bottom_navigation);
        bottomNav.setOnNavigationItemSelectedListener(navListener);

        mainViewPager = (ViewPager) findViewById(R.id.main_tabs_pager);
        myTabsAccesorAdapter = new TabsAccesorAdapter(getSupportFragmentManager());
        mainViewPager.setAdapter(myTabsAccesorAdapter);

        mainTableLayout = (TabLayout) findViewById(R.id.main_tabs);
        mainTableLayout.setupWithViewPager(mainViewPager);

    }


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

                    Fragment fragment = null;
                    switch ( item.getItemId())
                    {
                        case R.id.ic_house:

                            notifsTableLayout.setVisibility(View.GONE);
                            notifsViewPager1.setVisibility(View.GONE);

                            searchViewPager.setVisibility(View.GONE);
                            savedViewPager.setVisibility(View.GONE);
                            savedTableLayout.setVisibility(View.GONE);
                            mainTableLayout.setVisibility(View.VISIBLE);
                            mainViewPager.setVisibility(View.VISIBLE);
                            appBarLayout.setVisibility(View.VISIBLE);

                            myTabsAccesorAdapter = new TabsAccesorAdapter(getSupportFragmentManager());
                            mainViewPager.setAdapter(myTabsAccesorAdapter);
                            mainTableLayout.setupWithViewPager(mainViewPager);
                            CURRENT_STATE = false;

                            break;

                        case R.id.ic_search:
                            mainTableLayout.setVisibility(View.GONE);
                            mainViewPager.setVisibility(View.GONE);
                            notifsTableLayout.setVisibility(View.GONE);
                            notifsViewPager1.setVisibility(View.GONE);
                            savedViewPager.setVisibility(View.GONE);
                            savedTableLayout.setVisibility(View.GONE);
                            appBarLayout.setVisibility(View.VISIBLE);


                            searchViewPager.setVisibility(View.VISIBLE);

                            mainViewPager.removeView(mainTableLayout);
                            fragment = new SearchFragment();
                            getSupportFragmentManager().beginTransaction().replace(R.id.main_tabs_pager_search, fragment).commit();


                            break;



                        case R.id.ic_look:
                            appBarLayout.setVisibility(View.VISIBLE);

                            break;

                        case R.id.ic_saved:

                            appBarLayout.setVisibility(View.VISIBLE);

                            mainTableLayout.setVisibility(View.GONE);
                            mainViewPager.setVisibility(View.GONE);
                            notifsTableLayout.setVisibility(View.GONE);
                            notifsViewPager1.setVisibility(View.GONE);

                            searchViewPager.setVisibility(View.GONE);
                            savedViewPager.setVisibility(View.VISIBLE);
                            savedTableLayout.setVisibility(View.VISIBLE);


                            savedFragmentAdaptor = new SavedFragmentAdaptor(getSupportFragmentManager());
                            savedViewPager.setAdapter(savedFragmentAdaptor);
                            savedTableLayout.setupWithViewPager(savedViewPager);

                            break;

                        case R.id.ic_messages:

                            appBarLayout.setVisibility(View.VISIBLE);

                            savedViewPager.setVisibility(View.GONE);
                            savedTableLayout.setVisibility(View.GONE);
                            searchViewPager.setVisibility(View.GONE);
                            mainTableLayout.setVisibility(View.GONE);
                            mainViewPager.setVisibility(View.GONE);
                            notifsViewPager1.setVisibility(View.VISIBLE);
                            notifsTableLayout.setVisibility(View.VISIBLE);

                            tabsAccesorNotificationsAdapter = new TabsAccesorNotificationsAdapter(getSupportFragmentManager());
                            notifsViewPager1.setAdapter(tabsAccesorNotificationsAdapter);
                            notifsTableLayout.setupWithViewPager(notifsViewPager1);


                            break;

                    }
                    return true;
                }

            };

В результате я ожидаю, что каждый нижний элемент навигации будет иметь свои вкладки

bottomNav 1st case - (дома, земли, моря) Вкладки bottomNav 2-й корпус - (фрукты, овощи) Вкладки bottomNav 3-й корпус - (велосипеды, автомобили, велосипеды, фильмы) Вкладки ....

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