Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
49 / 37 / 14
Регистрация: 05.02.2010
Сообщений: 249

Переход на один Fragment из drawer menu с использованием navigation component

01.06.2021, 22:58. Показов 789. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Работаю над приложением с применением рекомендованного Гуглом подхода к проектированию. Главный фрагмент, по сути, это RecyclerView со списком статей по определенной тематике. Есть Drawer menu со списком тематик:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:showIn="navigation_view">
    <group android:checkableBehavior="single">
        <item
            android:id="@+id/physicsFragment"
            android:icon="@drawable/ic_menu_physics"
            android:title="Физика" />
        <item
            android:id="@+id/biologyFragment"
            android:icon="@drawable/ic_menu_biology"
            android:title="Биология" />
...
    </group>
</menu>
Соответственно есть фрагменты в navigation grapth:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?xml version="1.0" encoding="utf-8"?>
<navigation
    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/nav_graph"
    app:startDestination="@id/feedFragment">
 
    <fragment
        android:id="@+id/feedFragment"
        android:name="mars.mymiscapps.sciencetracker.ui.Feed.FeedFragment"
        android:label="Лента статей"
        tools:layout="@layout/feed_fragment" />
    <fragment
        android:id="@+id/physicsFragment"
        android:name="mars.mymiscapps.sciencetracker.ui.projects.PhysicsFragment"
        android:label="Физика"
        tools:layout="@layout/physics_fragment" >
        <action
            android:id="@+id/action_physicsFragment_to_articlesFragment"
            app:destination="@id/articlesFragment" />
    </fragment>
    <fragment
        android:id="@+id/biologyFragment"
        android:name="mars.mymiscapps.sciencetracker.ui.projects.BiologyFragment"
        android:label="Биология"
        tools:layout="@layout/biology_fragment" >
        <action
            android:id="@+id/action_biologyFragment_to_articlesFragment"
            app:destination="@id/articlesFragment" />
    </fragment>
 
</navigation>
Чтобы переходы работали я указываю в drawer те id, который есть в nav_graph. Но для этого на каждый раздел мне приходится создавать отдельный фрагмент. Разделов там десяток.
При этом функционал один - вывести в RecyclerView список. Я даже использую один адаптер, хотя и разные ViewModel.
Код очень сильно дублируется от этого. Если бы это был какой-нибудь интернет-магазин с 300 категориями, то создавать 300 фрагментов явно глупо.
Использовать одинаковые id в drawer menu студия не разрешает.
Как использовать 1 фрагмент с параметром для разных пунктов drawer?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.06.2021, 22:58
Ответы с готовыми решениями:

Navigation Architecture Component - получить Fragment в Activity
Здравствуйте. Решил использовать Navigation Architecture Component. код в navigation &lt;navigation...

Navigation Drawer Menu: можно ли использовать activity?
В Navigation Drawer Menu используются только фрагменты или можно обычными Активитями пользоваться? Ибо в одном из айтемов этого меню...

Конфликт между Navigation Drawer и Side Menu
Доброе время суток, форумчане! Нужна ваша помощь! SOS!:help: Дела в том, что я создал классический навигационное меню (Navigation...

3
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
02.06.2021, 00:17
Сделать кастомный фрагмент со списком (каталогом), по клику на элемент делать переход на другие фрагменты, которые наследуют всю основную логику от некоего базового абстрактного фрагмента.
1
49 / 37 / 14
Регистрация: 05.02.2010
Сообщений: 249
02.06.2021, 00:24  [ТС]
Цитата Сообщение от ExFau$t Посмотреть сообщение
Сделать кастомный фрагмент со списком (каталогом), по клику на элемент делать переход на другие фрагменты, которые наследуют всю основную логику от некоего базового абстрактного фрагмента.
Конечно я могу создать фрагмент на верхнем уровне и из него передавать id во второй фрагмент.
Но цель сделать это с использованием Jetpack, т.е. drawer menu и navigation component
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
02.06.2021, 00:49
Цитата Сообщение от Dreablin Посмотреть сообщение
Но цель сделать это с использованием Jetpack, т.е. drawer menu и navigation component
Мои слова никак с этим не конфликтуют. Можно ещё переопределить выбор итемов дравера, чтобы настроить переходы куда надо с нужными аргументами вместо дефолтных переходов по id из графа.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.06.2021, 00:49
Помогаю со студенческими работами здесь

Переход с MainActivity на navigation drawer
Есть форма(activity_main) с кнопкой, которая при нажатии переключает на следующую форму. Если в качестве следующей формы я указываю форму с...

Переход из navigation drawer activity по фрагментам
Здравствуйте, столкнулся с такой проблемой есть у меня navigation drawer внутри главного активити вот код: package...

Переход на другие активности из Navigation Drawer
Добрый день. Столкнулся с проблемой после того как прочитал статью на хабре о том как можно просто создать Navigation Drawer в стиле...

Drawer Menu + ViewPager: Что лучше - Activity -> Fragments или Fragment -> Fragments
Я новичок в Android. Пишу приложение, в котором: Drawer Меню - в нем (например) пункт 1 - Расчет массы - при выборе этого пункта...

Navigation drawer
Скажите, как сделать так чтобы при открытии другого activity, navigation drawer можно было так же с левой стороны на экране вызвать? При...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru