Я новичок в разработке для 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-й корпус - (велосипеды, автомобили, велосипеды, фильмы) Вкладки
....