Как реализовать .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();
Помогите пожалуйста реализовать это.

21 Авг 2019 в 06:32
252 +1
0
Ответы
1

Да, правильно, вам необходимо создать фрагмент и затем заменить его при нажатии на первый элемент в вашем 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 в вашем макете активности.

20 Апр 2024 в 13:17
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир