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

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

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

20 ответов

19 просмотров
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 событие с определённой дистанцией и скоростью.

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта