Как реализовать .OnDrawerItemClickListener по фрагментам? Помогите пожалуйста реализовать.withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id, IDrawerItem drawerItem) { switch (drawerItem.getIdentifier()) { case 1: break; } } }).build(); Я хочу чтобы в кейсе 1 по нажатию на 1-вы айтем вылазил фрагмент вот этот:TabLayout tabLayout = (TabLayout)findViewById(R.id.tabLayout); TabFragmentAdapterPlants adapterPlants = new TabFragmentAdapterPlants(getSupportFragmentManager()); viewPager.setAdapter(adapterPlants); tabLayout.setupWithViewPager(viewPager); Я пробывал в кейс 1 вставлять все вот эти строчки но мне кажеться это быдет не правильно можно это вынести в onCreate а в кейс просто вставить фрагмент.replace().commit(); Помогите пожалуйста реализовать это.
Да, правильно, вам необходимо создать фрагмент и затем заменить его при нажатии на первый элемент в вашем Drawer.
Вам нужно создать фрагмент, который содержит ваш код для инициализации TabLayout, ViewPager и адаптера. Затем, в вашем обработчике onItemClick для первого элемента Drawer, вы можете заменить текущий фрагмент на ваш созданный фрагмент.
Примерно так:
Создайте свой фрагмент с кодом для инициализации TabLayout, ViewPager и адаптера:public class TabFragment extends Fragment { private TabLayout tabLayout; private ViewPager viewPager; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_tab_layout, container, false); tabLayout = (TabLayout) view.findViewById(R.id.tabLayout); viewPager = (ViewPager) view.findViewById(R.id.viewPager); TabFragmentAdapterPlants adapterPlants = new TabFragmentAdapterPlants(getChildFragmentManager()); viewPager.setAdapter(adapterPlants); tabLayout.setupWithViewPager(viewPager); return view; } }И в вашем обработчике onItemClick для первого элемента Drawer:.withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id, IDrawerItem drawerItem) { switch (drawerItem.getIdentifier()) { case 1: FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); TabFragment tabFragment = new TabFragment(); transaction.replace(R.id.container, tabFragment); transaction.commit(); break; } } }).build();
Где R.id.container - это id контейнера, в который вы будете заменять фрагмент. Сначала убедитесь, что у вас есть контейнер с таким id в вашем макете активности.
Да, правильно, вам необходимо создать фрагмент и затем заменить его при нажатии на первый элемент в вашем Drawer.
Вам нужно создать фрагмент, который содержит ваш код для инициализации TabLayout, ViewPager и адаптера. Затем, в вашем обработчике onItemClick для первого элемента Drawer, вы можете заменить текущий фрагмент на ваш созданный фрагмент.
Примерно так:
Создайте свой фрагмент с кодом для инициализации TabLayout, ViewPager и адаптера:public class TabFragment extends Fragment {private TabLayout tabLayout;
private ViewPager viewPager;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_tab_layout, container, false);
tabLayout = (TabLayout) view.findViewById(R.id.tabLayout);
viewPager = (ViewPager) view.findViewById(R.id.viewPager);
TabFragmentAdapterPlants adapterPlants = new TabFragmentAdapterPlants(getChildFragmentManager());
viewPager.setAdapter(adapterPlants);
tabLayout.setupWithViewPager(viewPager);
return view;
}
}И в вашем обработчике onItemClick для первого элемента Drawer:.withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id, IDrawerItem drawerItem) {
switch (drawerItem.getIdentifier()) {
case 1:
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
TabFragment tabFragment = new TabFragment();
transaction.replace(R.id.container, tabFragment);
transaction.commit();
break;
}
}
}).build();
Где R.id.container - это id контейнера, в который вы будете заменять фрагмент. Сначала убедитесь, что у вас есть контейнер с таким id в вашем макете активности.