Alex
нужно стереть бутлоадер
лучше сразу телефон об стену 😄
d
код покажи в начале
уже все ответили
Корбен
Типы программистов по профилю на GitHub
binary.
Как вложить стиль в стиль?
binary.
А то я чет забыл
binary.
Напомните пожалуйста
binary.
Как это делается
binary.
Вы наверное не поняли
binary.
Или поняли
binary.
Неужели никто не знает?
Pavel
Ты про то, как писать всю фразу в одном сообщении?
Nick
Неужели никто не знает?
Вот пример <style name="activated_dark_item" parent="android:Theme.Holo"> <item name="android:background">@drawable/mDrawable</item> </style>
Dmitry
Ребят, подскажите, плз, каким инструментом сделать for loop такой, чтобы следующая итерация начиналась только после команды из нынешней итерации (допустим ждем ответа от сервера, если ответ 'success', то начинается следующая итерация и т.д). На iOS делал через DispatchGroup и DispatchSemaphore, а здесь не знаю пока куда копать.
Ivansuper
Сделай через синхронные вызовы в ретрофите и иди по циклу в рамках одного фонового потока
Ivansuper
Возможно другие люди подскажут какой нибудь способ через RX
Ivansuper
Но в целом тебе ничего не мешает делать синхронные хттп вызовы в плане сервера или чего то иного
Maxim
Ребят, кто нибудь работал с MotionLayout?
Maxim
Почему анимация сама заканчивается, хотя скролла нет?
Maxim
Anonymous
вопрос на засыпку
Anonymous
как вернуть панель
Anonymous
"что-то нажал и оно исчезло"
Kozimjon
как вернуть панель
Какую именно?
Anonymous
правую
Anonymous
там где device explorer
Kozimjon
Посмотри на вкладке view сверху
Anonymous
Посмотри на вкладке view сверху
перезапустил студию и все появилось
D1D2C0D1
Здесь есть те кто по политике Play.Market хорошо разбирается?
D1D2C0D1
Если в приложении будет форма ввода банковской карты для получения на неё денег, то за это будет блокировать гугл?
Alexey
Я не читал политики, но наверняка
Dug
Сам колапсится наверн
Alexey
Вопрос по рекламе, если кто имел опыт. Сильно по доходности отличается полноэкранная реклама и реклама в виде элемента ресайклера?
Ivan
Ребят, мой ViewModel является recycler observer моиз вью(активити/фрагмент). Если с активити все нормально, то с фрагментами не совсем, потмоу как у lifecycle есть методы только активити. Как правильно сделать, чтобы viewModel наблюдал так же за методами фрагмента(onViewCreated()) например?
Ivan
у разных вью свой viewModel
Ivan
пока что я додумался сделать так, когда вызывается во фрагменте методы ЖЦ пишу viewModel.onActivityCreated()
Ivan
Ну смотри, в случае с фрагментом не хватает методв ЖЦ активити
Ivan
потому как если я в контейнере например меняю один фрагмент другим, то срабатывает onViewDestroyed, но при этом сам фрагмент полностью не уничтожается
Мумитроль
Ну смотри, в случае с фрагментом не хватает методв ЖЦ активити
ViewModel помогает избежать работы с жц и абстрагироваться, зачем вы их туда тащите?
Мумитроль
Начните с корня проблемы. Какую задачу вы решаете? Потому что сейчас ощущение, что вы пытаетесь делать то, чего точно не нужно₽
Мумитроль
Задайтесь вопросом: «нужно ли вилкой есть суп?», вместо вопроса «как?»
Ivan
хех, ну если можно абстрагироваться, то вот есть пример конкретный, когда допустим каждый раз когда вызывается onStart нужно грузить из базы
Ivan
все это же должно быть во viewModel?
Ivan
а как быть тогда?
Мумитроль
Вы не правильно ваш onStart понимаете, он не для того чтобы грузить из базы, он точка «когда можно начинать грузить»
Мумитроль
Вы у себя используете LiveData или Rx?
Ivan
LiveData для того чтобы из вьюмодел передать в View, а rx в domain и data слояз
Мумитроль
А в чем разница ?
Я думаю с этим вы можете обратиться с поиском в гугл
Ivan
Я понимаю onStart как метод который вызывается при определенных условиях и не более)
Мумитроль
Ivan
сразу во вью?
Мумитроль
Ну зачем вам LiveData тогда, если у вас есть RX?
Мумитроль
Вы можете тоже самое сделать на RX
Ivan
да просто когда разбирался с архитектурными компонентами, там lIveData была ка краз для связи viewModel и view)
Мумитроль
И второе, вам не нужно оповещать вашу ViewModel об onStart, она вообще о вашем жц знать ничего не должна. Вы в onStart можете спокойно подвязываться на холодные обсерверы Rx, а в onStop отвязываться. Для старта каких то других загрузок можно прям конструктор ViewModel использовать и как Симе рыбный метод onCleared
Ivan
иожно какой то пример написанного?
Nikita
?
Theara
Hello guy! Anyone have any idea to embed Telegram chat into android app?
Nikita
LiveData Нужен потому что он знает о жизненном цикле и отдаст данные мертвой View
Nikita
Ну зачем вам LiveData тогда, если у вас есть RX?
А c Rx вам придется ручками подписываться-отписываться
Ivan
кстати, со viewModel трабла была, потому как она пересоздавалась постоянно. Например при смене ориентации
Мумитроль
Поймите, ViewModel как раз и создан чтобы помочь вам забыть что и когда, чтобы операции работы с базой, сетью и тд были абстрагированы от каких-то жизненных циклов, чтобы можно было хранить состояние экрана переживающее view, а вы тяните туда это все. Для примеров сразу не подскажу, вам стоит поискать самостоятельно какие-нибудь best practice)
Мумитроль
кстати, со viewModel трабла была, потому как она пересоздавалась постоянно. Например при смене ориентации
Значит вы что-то не так делаете и проблема в том как вы ее используете)
Ivan
override fun onCreateViewModel(viewModelFactory: ViewModelProvider.Factory): MainFragmentViewModel { return ViewModelProviders.of(this, viewModelFactory).get(MainFragmentViewModel::class.java) }
Ivan
вот пример как делаю
Мумитроль
кстати, со viewModel трабла была, потому как она пересоздавалась постоянно. Например при смене ориентации
Может потому что вы не верно с фрагментами работаете и пересоздаете его?
Nikita
да просто когда разбирался с архитектурными компонентами, там lIveData была ка краз для связи viewModel и view)
Я бы вам посоветовал сделать так: сделать метод во ViewModel : getData(). Который проверит есть ли у вас LiveData, если есть то просто отдаст его. Если нет то 1)создать LiveData и отдать его,2) Начать загрузку, когда она закончится данные засунуть во LiveData(MutableLiveData). В таком случае загрузка у вас начнется только во время первого запроса и при пересоздании вашего Фрагмента-Активити не будет заново грузится. Если у вас данные приходят по Rx вызывайте dispose в методе onDestrory() во VM.
Ivan
Навигация завязана на cicerone, насколько знаю он один раз создвет фрагмент