169 похожих чатов

И снова я с довольно глупым вопросом. Суть в чём:

как грамотно увязать Navigation Component, ViewPager2 и стандартное меню Android? Задача такова: нужно сделать опциональный переход по свайпу между несколькими фрагментами, при этом оставить возможность перехода без анимации при помощи нажатия на иконки в меню

20 ответов

5 просмотров
A A-F O X Автор вопроса

А как мне, в таком случае, реализовать переход по свайпу? Или мне из-за этого придётся выбросить навкомпонент?

A A F O X
А как мне, в таком случае, реализовать переход по ...

Не до конца понимаю твой кейс, но что конкретно не так? VP лежит в фрагменте который является частью графа, фрагменты внутри VP уже вне графа, их можно листать по желанию. Если нужно открыть фрагмент с VP сразу на определенной странице, можно передать её через аргумент

A A-F O X Автор вопроса
Дмитрий Рубцов 👨‍💻
Не до конца понимаю твой кейс, но что конкретно не...

Мой кейс простой как два пальца — есть MyActivity, в котором находятся FragmentContainerView и ToolBar, и несколько фрагментов - Fragment A, B, C. У MyActivity так же присутствует меню и некоторые его айтемы, например, отвечающие за переход к Fragment A, постоянно показываются в виде иконок, поэтому каждому айтему с иконкой соответствует свой фрагмент (Fragment A, B, C). Соотвественно, чтобы перейти из Fragment A => Fragment C тебе нужно просто нажать на соответствующий айтем с иконкой. Что я хочу сделать? Я хочу просто прикрутить возможность пролистывания (желательно с красивой анимацией) чтобы ты, будучи в Fragment A, мог с помощью свайпа перейти в Fragment B, а затем в Fragment C.

A A-F O X Автор вопроса
Savva Mirzoyan
Вьюпейджер?

Но мне в таком случае придётся выкидывать навкомпонент

A A F O X
Мой кейс простой как два пальца — есть MyActivity,...

Понял, ну ты хочешь в обход навкомпонента поменять его стек, я если честно хз есть ли в нем удобный метод для такого, скорее всего нет

A A F O X
Но мне в таком случае придётся выкидывать навкомпо...

Вообще изначально странный юзкейс, но допустим. Навкомпонент выкидывать не надо. Будет у вас стартДестинейшн фрагмент, который в себе только вьюпейджер и держит, через фрагментрезалтЛистенер от активити будет получать номер фрагмента для проскролливания, а вся навигация будет идти не от каждого отдельного фрагмента, а от хостящего этот вьюпейджер

A A-F O X Автор вопроса
Дмитрий Рубцов 👨‍💻
Понял, ну ты хочешь в обход навкомпонента поменять...

Тогда с чего начать чтобы создать такой ужасный прекрасный велисопед?

Savva Mirzoyan
Вообще изначально странный юзкейс, но допустим. На...

Так и зачем ему тогда навкомпонент в такой схеме, если он не используется

A A-F O X Автор вопроса
Savva Mirzoyan
Вообще изначально странный юзкейс, но допустим. На...

Ну увы и ах, мой проект это вообще целиком и полностью нетипичный юзкейс. Так, то есть вы предлагаете добавить фрагмент для того чтобы туда всунуть ViewPager2? То есть будет что-то вроде этого: MyActivity => Fragment VP, а когда пользователь захочет нажать на иконку айтема меню Fragment B, то мы смело подменяем Fragment VP Fragment B?

A A F O X
Ну увы и ах, мой проект это вообще целиком и полно...

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

A A-F O X Автор вопроса
Savva Mirzoyan
Активити отправляет резалт для показа нужного фраг...

Всё равно немного не понимаю как вы себе это представляете. Да и куда мне в таком кейсе деть навкомпонент, опять же? Ладно, лучше попробую поискать какие-нибудь либы и конкретно их проковырять. Вроде помню одну такую, которая предлагала что-то похожее

А может убрать вью пейджер и вручную как то добавить свайпы, которые будут дергать нав контроллер...

A A F O X
Всё равно немного не понимаю как вы себе это предс...

Фрагмента контейнер содержит в себе навигацию: 1) ViewPagerFragment (Start destination) n) Любой другой n-ый фрагмент Навигация происходит между этими экранами и даже если фрагмент С должен куда то вести, это все равно будет происходить из ViewPagerFragment'а

Savva Mirzoyan
Фрагмента контейнер содержит в себе навигацию: 1) ...

Ты про то, что это будет навигация вложенная типо?

A A-F O X Автор вопроса
Tigran Movsisyan
А может убрать вью пейджер и вручную как то добави...

Можно прицепить этот как его... OnGestureListener, что, возможно, проще, но там не будет анимации =)

A A F O X
Можно прицепить этот как его... OnGestureListener,...

Почему не будет? Обрабатываешь свайп и дергаешь из навкомпонента переход. Анимация там привязана

A A-F O X Автор вопроса
Artemiy Terekhov
Почему не будет? Обрабатываешь свайп и дергаешь из...

Хм... А он теперь адекватно обрабатывает свайпы? Просто я раньше, вроде как, использовал OnGestureListener, но блин, со свайпами там вообще страшно было

A A F O X
Хм... А он теперь адекватно обрабатывает свайпы? П...

Да не было там ничего страшного. Просто down и up событие с определённой дистанцией и скоростью.

Похожие вопросы

Обсуждают сегодня

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
Вопрос по WIN32: Насколько я понимаю то все функции win32 привязаны к объектам операционной системы. Например консоль, файл, кисть, окна итд. Следовательно функции win32 упра...
Tommy Vercetti
6
Hello, can I install macOS and run flutter on a virtual machine? Is it possible to print for iphone?
Mazones
11
кто-то пользуется компонентами rx ? как их лучше ставить, через OPM? (lazarus)
Iluha Companets
15
подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
Дороу! У кого-нибудь есть в загашнике проверенная функция экранирования, аналог re.escape в Python? Из доки: » Escape all the characters in pattern except ASCII letters and n...
Daniil Smolyakov
9
В смысле более затратная? Общая стоимость владения лошадью меньше, чем автомобиля. В среднем.
Sergej R
10
есть тут кто-то , кто только начал изучать си? если проходите курс на степике или как-то сами изучаете, пишите, может, скооперируемся?..
Eule
25
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Скажите, тут нет проблемы? IMyInterface1 = interface function GetInterface2: IInterface2; ... function TMyInterface.GetInterface2: IInterface2; begin Result := TI...
Ruslan aka DUDE
18
Карта сайта