Damir
onCleared не вызывается
Damir
Но поля все равно пересоздаются ?
⁣
Вспомнил, на OnDestroy() фрагмента полностью должна ViewModel уничтожаться, в остальных случаях - сохраняется полностью
Damir
но ведь onCleared не вызывается
Damir
Хотя щас лог
Damir
сделаю, проверю
Damir
В таком случае где лучше всего подписываться на лайв дату?? В каком методе фрагмента ??
⁣
ты ошибаешься. Если это так, то она бесполезна)
Она не бесполезна, ведь всё зависит от Lifecycle Owner-а
Damir
ViewModel зависит же только от активити
⁣
Denis
onDestroy фрагмента она переживет, если это не финиш
Denis
даже представить не могу, зачем нужен этот код
Damir
только после он дестрой активити вызывается onCleared
⁣
onDestroy фрагмента она переживет, если это не финиш
Хотя да, правильно. Ошибся я, судя по всему, так как в любом случае, Owner-ом будет активность, в которой живёт фрагмент. OnDestroy() самой активности не переживёт, получается?
Denis
Denis
если активти просто повернули, то viewModel живет
Denis
если ты уходишь с экрана, то она дохнет
Denis
не всегда
Denis
выше написал
Denis
и код скинул
⁣
Ну да, всё правильно) Я имел ввиду полное уничтожение, т.е. финиш
Damir
выше написал
да понял, спс
Turalllb
А мы не можем создать класс TextView (мне нужно интерфейсами обложить его), но параметры для него брать из xml и при этом без оборачивания это в FrameLayout какой то ? типо class TabsViewItem @JvmOverloads constructor(context: Context, attributeSet: AttributeSet? = null, deffStyle: Int = 0) : TextView(context, attributeSet, deffStyle)
Turalllb
не хочу эти параметры в коде программно задавать, хочу через xml, но при этом чтобы базовый был не FrameLayout , а TextView
⁣
да
Я как раз такой TextView делал, загружал значения кастомных атрибутов из конструктора, а назначал в xml
Turalllb
Если базовый TextView, то мы не можем делать inflate внутри, используя merge, т.к. inflate ожидает ViewGroup , а TextView это просто View
Александр
Лохично. Что ты хочешь сделать то?
Turalllb
Лохично. Что ты хочешь сделать то?
Хочу TextView класс, чтобы его обложить интерфейсами, но не хочу атрибуты этому классу задавать в коде, хочу их из xml
⁣
Александр
Хочу TextView класс, чтобы его обложить интерфейсами, но не хочу атрибуты этому классу задавать в коде, хочу их из xml
Чёт не вижу пока связи с inflate. Как и проблемы. Ну делаешь YourTextView:TextView(), реализуешь свои интерфейсы, делаешь кастомные атрибуты. Где затык то.
Turalllb
То есть, так не получится сделать?
Блин, ну похоже что это то, но как то сложно..не делал так ни разу. не пробовал кастомные атрибуты. Теперь понимаю, зачем они нужны. Но тем не менее эти атрибуты как то сложнее задавать, чем подать на вход xml с merge внутри которого все атрибуты для TextView
Turalllb
Ну потом просто в конструкторе достаёшь значения и всё
да я понял, и кажется мне проще добавить FrameLayout сверху и использовать inflate
Turalllb
спасибо
Александр
Мб поможет. Про кастомки. Для расширения кругозора так сказать. https://youtu.be/1rHVo9jEFJ8?t=3855
Damir
Подскажите пж, у меня есть Activity с BottomNavigation и к нему привязаны 4 фрагмента. И когда я переключаюсь между фрагментами с помощью supportFragmentManager.replace(), то у меня фрагменты заново прогружаются, detach attach. Т.е не нужно никак сохранять состояние фрагмента?? А то внутри фрагмента у меня запросы к репозиторию и т.д все заново происходят!!
Alexsandr
Кто нибудь знает что за ошибка, уже пол дня бьюсь
Dmytro
Кирилл
Кто делал авторизацию и регистрацию в андройд приложении, вы шифровали данные из приложения при отправке на сервер?
Кирилл
Почему?
Dmytro
Почему?
Зачем шифровать? Чтобы что?
Кирилл
Зачем шифровать? Чтобы что?
Не знаю, ты же передаешь почту и пароль
Александр
Turalllb
Т.е add будет брать созданный фрагмент и добавлять сверху или создавать новый ?
в add что то подается, то что туда подается будет лежать сверху. Создашь новый и подашь туда, будет новый. А можно взять уже тот который там лежит и поднять его наверх, для этого надо работать через теги. В общем надо гуглить как работать с fragmentManager
Дмитрий
Ребят, который час не получается настроить чтобы PopupWindow был в нужном месте относительно вьюхи. То вверху то внизу. Подскажите, пожалуйста, что я нелаю не так? https://pastebin.com/Z8PpxQmp
⁣
Как раз затем и делают, что зачастую правильнее, чтобы когда фрагмент открывался, данные перезапрашивались.
А если у меня на фрагменте есть несколько полей, которые валидируются? Если пересоздавать View фрагмента, мне нужно каждый раз заново запускать валидацию, чтобы вернуть исходное состояние View, которое человек последний раз видел на этим экране?
⁣
Если у меня во фрагменте MotionLayout с определённым состоянием, или два Motion-a, мне под каждый делать переменные во ViewModel-и, которые помогут сохранить их состояния?
Александр
А если у меня на фрагменте есть несколько полей, которые валидируются? Если пересоздавать View фрагмента, мне нужно каждый раз заново запускать валидацию, чтобы вернуть исходное состояние View, которое человек последний раз видел на этим экране?
А? Ну да. Перезашёл на экран - начал всё сначала. Нет, можешь офк сейвить куда - нибудь промежуточные данные и возвращать их на место по возвращени, но это вкусовщина, и хз стоит ли оно того. Смотри сам крч.
Александр
Спасибо огромное!!! Я просто один с этими вопросами работаю, никто толком объяснить не мог, что это вкусовщина)
Ну это такое, чисто моё мнение ж. Неоднозначная тема. Есть экраны, в которых очевидно нужно сейвить состояние - типо экрана, хз, Пикабу, где юзер пишет пост в 100500 строк, а потом случайно "назад" нажал. Есть экраны, где это и нафиг не надо. Список товаров, условно. Я вот сейчас работаю над проектом, по сути приложение для кассовых аппаратов. Мы никаких промежуточных данных не сохраняем, каждый экран - новый запрос в бд/на сервер. Це бизнес(имхо), нельзя позволять пользователю видеть данные, которые могут устареть в рамках одной сессии. Пусть пересоздаётся каждый раз, нам не обломно. Смотри сам крч(1).
fillooow
Народ, есть у меня фрагмент в нем NestedScrollView я хочу отлистать до середины этот фрагмент, нажать на некую КНОПКУ (которая находится на панели навигации внизу, то есть, я всегда могу нажать на нее) после нажатия на кнопку, фрагмент должен отлистаться до топа и запустить какой-то action вопрос, как отследить такое событие? я попробовал запилить функцию, которая использует OnScrollChangeListener: fun NestedScrollView.scrollTop(callback: () -> Unit) { setOnScrollChangeListener { _: NestedScrollView?, _: Int, scrollY: Int, _: Int, _: Int -> if (scrollY == 0) { callback.invoke() } } fullScroll(View.FOCUS_UP) } но она не работает, если мы уже на самом верху фрагмента находимся, а значит, скролл не изменяется и коллбек не вызывается
fillooow
есть ли функции, которые позволяют листать и проверять, долистали ли мы до топа NestedScrollView ?
Dmytro
есть ли функции, которые позволяют листать и проверять, долистали ли мы до топа NestedScrollView ?
если при скролУ не вызывается скроллчендж лисенер, то проверь сам и вызови свой экшен
Дмитрий
Описываешь задачу не так.. Опиши нормально, что нужно. Желательно актуальное поведение и какое ожидаешь
Мне нужно чтобы PopupWindow была в таком положении как на фото. Количество элементов может быть до 10 и чтобы при отрисовке всегда отображалось относительно угла фото. На данный момент отображается сверху вниз относительно заданных координат. Подскажите, пожалуйста, как мне действовать чтобы получить вид как на картинке?
fillooow
если при скролУ не вызывается скроллчендж лисенер, то проверь сам и вызови свой экшен
Не понял В смысле при скроллУ не вызывается слушатель? Я ж могу просто открыть экран, ничего не листать и нажать на кнопку И в таком случае скроллУ не изменяется вообще никак
Dmytro
Не понял В смысле при скроллУ не вызывается слушатель? Я ж могу просто открыть экран, ничего не листать и нажать на кнопку И в таком случае скроллУ не изменяется вообще никак
вот именно) Ты жмешь кнопку: Проверяешь скроллУ, если он 0, то сразу запускаешь экшен, Если нет, то вешаешь слушатель, скроллишь вверх, скролл достагет верха и вызывает твой экшен
fillooow
Сенкс
⁣
Уважаемые знатоки, кто-нибудь сталкивался с подобной проблемой? Если использовать архитектурный компонент Navigation, то вызов метода navigate() не проходит, если приложение свёрнуто. Ignoring navigate() call: FragmentManager has already saved its state Допустим, я делаю сетевой запрос и когда он закончится, нужно показать следующий экран. А если приложение на время запроса свернуть, то вызов navigate() не пройдёт. Как же тогда пользоваться Navigation?
Dmitry
подскажите в чем может быть причина ошибки AppUpdateManagerFactory // appUpdateInfo om.google.android.play.core.internal.aa: Failed to bind to the service. https://stackoverflow.com/questions/58637981/failed-to-bind-to-the-service https://stackoverflow.com/questions/56325221/in-app-update-throw-error-message-in-android
Дмитрий
самое быстрое что могу предложить, это прибавить к У оффсету высоту попап
Спасибо большое) Только что пришло в голову))) и было ж так тупить)