М.Двач / Программирование

Этого треда уже нет.
Это копия, сохраненная 8 ноября 2016 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

782 Кб, 801x801

Android Development Thread 2.0.1 23 Сен, 22:19 #846976 В конец треда | Веб

Android Development Thread 2.0.1

Обсуждаем разработку под Android, ждём выхода новых Нексусов, смеёмся над седьмым айфоном.

FAQ

> Хочу вкатиться в разработку под Android!
Большинство приложений написано на Java, выучить её на хорошем уровне — это первое, что необходимо сделать. Рекомендуемую литературу см. в Java-треде.
После этого можно открыть официальную документацию http://developer.android.com/training/index.html и попробовать создать по туториалам своё первое приложение.
В дальнейшем потребуется базовое знание SQL, понимание XML и JSON.

> IDE и инструменты?
Android Studio — основной инструмент разработчика. Кроме неё потребуется Android SDK (устанавливается вместе со студией).

> Мануалы?
- Официальная документация: http://developer.android.com/
- Полезный гайд для начинающих и продвинутых: http://guides.thecodepath.com/android
- Бесплатный видеокурс от Google для новичков: https://www.udacity.com/course/android-development-for-beginners--ud837
- Два ресурса, единственный плюс которых — русский язык: http://startandroid.ru/ и http://developer.alexanderklimov.ru/android/
- Классика, способная дать ответ на почти любой вопрос "Как сделать xyz?": http://stackoverflow.com/

> Не хочу писать на Java!
- Kotlin — JVM-совместимый язык от JetBrains. Есть лямбды, стримы и делегаты. Можно использовать в проекте вместе с кодом на Java.

> Есть что-то кроме нативных приложений?
- Xamarin — кросс-платформенный фремворк на C#. Представляет из себя обёртку над Android API. Куплено Microsoft. Теперь есть бесплатная версия.
- PhoneGap/Ionic/Titanium/ReactNative — имя им javascript, принципы у них разные, первые три попытка в кроссплатформенность одного кода, ReactNative проповедует другой подход, а именно написание разного кода но на одном языке. Популярность у них разная как и размер комьюнити. Вопросы по ним — в js-тред.
- BugVM — кросс-платформенный фреймворк, написанный на Java. Форк невинно убиенного RoboVM.

> Хочу писать игры!
LibGDX или Unity. Спрашивать в /gd/

> Что нужно, чтобы взяли джуниором? Что учить в первую очередь?
Нужно хорошее знание Java, понимание базовых принципов Android (жизненный цикл activity/fragment, что такое Context, intents, services, UI thread, support library, shared preferences, SQLite), знание популярных библиотек типа Retrofit + Glide/Picasso. И хотя бы оно готовое приложение.

Предыдущий тред: https://2ch.hk/pr/res/838598.html (М)

Ответы>>848397>>849601>>850192

185 Кб, 1600x800

23 Сен, 22:24 #2 #846986

>>846981
А в чем проблема сидеть с деббагером? Добавил брейкпойнт и всё, уже все значения переменных видишь. Это наоборт быстрее и удобнее, чем писать логи в разных местах, ждать, пока оно две минуты будет перекомпилироваться и перезапускаться.

Ответы>>846993

23 Сен, 22:25 #3 #846989

>>846984
Да нахуй твои логи никому не нужны потому что.

Ответы>>846995

23 Сен, 22:28 #4 #846993

>>846986
Не люблю F5 кучу раз в цикле жать. Вообще говоря ты прав, если время сборки долгое то да, но с инстант раном это секунды. Но опять же логи запросов-ответов удобней смотреть в логе, так быстрей можно выявить ошибку.

Ответы>>856423

23 Сен, 22:31 #5 #846995

>>846989
Тебе не нужны - не пользуйся. Кому-то вон и асинктаски норм.и собаки

23 Сен, 22:32 #6 #846997

>>846996
Конкретизируй свое утверждение.

23 Сен, 22:33 #7 #846999

>>846998
Уто тебе сказал, что я про стектрейс забываю?

Ответы>>847000>>847002

23 Сен, 22:35 #8 #847000

>>846999
Твоя мамка.

Ответы>>847001

106 Кб, 1238x530

23 Сен, 22:37 #9 #847001

>>847000
Найс аргументы.

Ответы>>847002>>847014

23 Сен, 22:40 #10 #847002

>>846999
>>847001
Я не понимаю.

> Нахуя писать значения переменных в лог, когда у тебя есть дебаггер? В случае крэша неверное значение будет в эксепшене.
Это твой пост?

Ответы>>847007>>847016

23 Сен, 22:49 #11 #847007

>>847002
Нет конечно.

23 Сен, 23:07 #12 #847014

>>847001
У тебя утечка в классе.

Ответы>>847017

23 Сен, 23:07 #13 #847016

>>847002
> Я не понимаю.
Это потому, что ты тупой.

> Это твой пост?
Это мой пост.

23 Сен, 23:11 #14 #847017

>>847014
Это дерево создается в Application::onCreate там же где инициализируется крашлитика. И крашлитика и все деревья тимбера умрут с приложением, где утечка?

24 Сен, 13:07 #15 #847250

Использовал кто ? https://atlas.layer.com/android

Ответы>>847320

24 Сен, 14:27 #16 #847293

анончики, как часто вы используете фрагменты и вложенные фрагменты в другие фрагменты в своих приложениях?

Ответы>>847409>>847423

24 Сен, 15:21 #17 #847320

>>847250
пиздец, если ты не в состояние сделать сам список диалогов и сам диалог + прикрутить gcm, то юзай

24 Сен, 17:37 #18 #847409

>>847293
> как часто вы используете фрагменты
Всегда.
> вложенные фрагменты в другие фрагменты
Никогда.

Ответы>>847422

24 Сен, 18:09 #19 #847422

>>847409
ViewPager?

24 Сен, 18:10 #20 #847423

>>847293
Всегда. Иногда.

27 Сен, 17:29 #21 #847827

Бамп. Спасибо за рабочий роут на pm без пасскода.

27 Сен, 18:30 #22 #847838

Господа, интересует цена вопроса. Суть токова, необходимо запилить калькулятор "товара". Выбираю размерность запроса (метры, дюймы, килограммы, метры) ввожу текущую стоимость за тонну, в итоге получаю общий вес заказа с ценой. Сколько займет перевод экселевской таблички в юзабельный вид и соответственно цена вопроса.

27 Сен, 19:55 #23 #847867

Аноны, а что надо знать, чтобы джуном взялиили хотя бы трейнии?

28 Сен, 00:47 #24 #847924

По каким словам гуглить, как добавить элементам списка действие при его смехивании в бок (по типу как в iOS, где появляется кнопка удаления элемента когда его вбок утягиваешь)

Ответы>>847942

28 Сен, 05:50 #25 #847942

>>847924
swipe to dismiss ?

28 Сен, 12:28 #26 #848013

Посоны, я конечно понимаю что фонгап это говно и вообще ни по пацански, но он же не сложный верно? То есть я нормально шарю как что сделать нативно, но не уверен что на фонгапе я смогу это сделать за приемлимое время. Я прав?

Ответы>>848086

28 Сен, 17:18 #27 #848086

>>848013
Что значит "нативно"?
мимонуфаг

Ответы>>848089

28 Сен, 17:25 #28 #848089

>>848086
>Нативно
Для андроида это подразумевает сделать на языке работающем на JVM - java, scala, kotlin.
Для iOS это Objective-C/Swift.
Не наивно это всякие ксамарины, фонгапы, реакты, титаниумы и тд.

Ответы>>848190

28 Сен, 21:50 #29 #848178

Вечер добрый, уважаемые. Столкнулся с такой проблемой: есть игрушка на libgdx, и есть admob. Там, как я понял, неск месяцев назад сильно изменился порядок интеграции баннера. Если раньше его можно было инициализировать используя вот такое
AdView adView = new AdView(this, AdSize.BANNER, "xxxxxxxx");
и поэтому можно было спокойно (как в гайде 2015 года) запихнуть View игрушки и adView в один RelativeLayout.
Но теперь же для инициализации необходимо в layout файл какой-нибудь пихнуть описание баннера, потом обязательно инициализировать эту разметку и в ней уже инициализировать баннер, тк там findViewById, для которого необходимо наличие разметки. Собсно, с самой рекламой проблем нет, баннер без проблем выводится (в пустой разметке). Скрестить с игрой так и не получилось. Инициализируется она как-то так: initialize(new Mygame(), config);

Кто-нибудь может подсказать, как скрестить ? (у меня прост все менюшки и т д внутри игры, с активностями всякими ничего не делаю)

Ответы>>848182>>848206

28 Сен, 21:56 #30 #848182

>>848178
>Кто-нибудь может подсказать, как скрестить ? (у У тебя игра в активити или во фрагменте?
Можешь перенести во фрагмент, тогда в активити делаешь все с рекламой, а потом вставляешь фрагмент с игрой. Посмотри в сторону плагинов для libGdx. А вообще не верю, что там https://github.com/libgdx/libgdx/wiki/Admob-in-libgdx не все расписано.

Ответы>>848187

28 Сен, 22:01 #31 #848187

>>848182
Вот именно там и не расписано. 2 дня уже гуглю, дядь. Там как раз старая инициализация, которая сейчас не работает, на firebase другая показана.

28 Сен, 22:06 #32 #848190

>>848089
Благодарю

28 Сен, 23:01 #33 #848206

>>848178
Откосить на старые сервисы вместо ебучего файрбейза. Или игру во фрагмент.

28 Сен, 23:53 #34 #848226

String empty = "";
(editText.getText().toString().equals(empty)) // возвращает false

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

Ответы>>848232

29 Сен, 00:24 #35 #848232

>>848226
isEmpty

29 Сен, 17:56 #36 #848397

>>846976 (OP)
Почему такой пердолинг с SDK? Как это говно поставить? Я блять из мира Java, к пердолингу привычен, спринги там, все дела, но вот уже неделю не могу въехать.
Создаю виртуальное устройство, жму на нем Start, вылезает окошко типа starting, бежит прогресс и оно потом закрывается.
В Eclipse выходит сообщение unable detect adb version, когда создаю новый проект, вылезает пустое сообщение об ошибке (да, реально пустое окошко).

Короче хуйня какая-то, вкатиться не могу, хотел для интереса наваять пару приложений, а инструментария то оказывается еще нет. А Андройду ведь уже не первый и не второй год. М-да, представляю, что делается на устройствах под управлением этой ОС. Теперь понятно, почему люди, чтобы что-то на своем смартфоне сделать, полчаса втыкают и матерятся, я думал это они ламье, а оказалось нет, судя по инструментарию разработчика.

Неприятно всем этим удивлен.

Ответы>>848404>>848422>>849996

29 Сен, 18:03 #37 #848401

Анон, который выкладывал тестовое задание в прошлом треде ты еще тут? Я почти дописал

Ответы>>848421>>848423

29 Сен, 18:08 #38 #848404

>>848397
Ну ты красава, пользуешься эклипсом, который уже хуй знает сколько не поддерживается и орешь тут про пердолинг
ПОСТАВЬ ANDROID STUDIO МАНЬ она тебе все правильно скачает и нстароит, у тебя какие-то косяки с тулами для дебага.
В сравнении с xml конфигурированием спринга, хибернейта и прочего энтерпрайза, разработка на ведро это как прогулка по стране оз

Ответы>>848430

29 Сен, 19:15 #39 #848421

>>848401
Всегда тут. Чего хотел-то?

Ответы>>848424>>851209

29 Сен, 19:16 #40 #848422

>>848397
Ты бы еще в НетБинсе работал, клоун.

Ответы>>848430

29 Сен, 19:18 #41 #848423

>>848401
Кинь пик, а то я проебал.

55 Кб, 873x762

56 Кб, 775x740

29 Сен, 19:25 #42 #848424

>>848421
Посложнее что-нибудь. Второе попробую на котлине ебнуть.

Ответы>>848497

29 Сен, 19:29 #43 #848425

Кстати аноны, можно в дройде что-то типа цветового фильтра для всего view без тантрической ебли реализовать? Хочу сделать в приложении погоды на пике выше, чтобы фрагмент с инфой о погоде слегка затеняло серым, если это прогноз из кеша и он старше чем сутки.

29 Сен, 19:51 #44 #848430

>>848404
>>848422
Да я пользуюсь эклипсом. И пользовался всегда. И не надо мне тут, это отличная среда, куда как лучше всяких ваших идей, нетбинсов и прочей хуйни.

Ответы>>848432>>848434>>848441

29 Сен, 20:02 #45 #848432

>>848430
>я пользуюсь эклипсом
Ah you

29 Сен, 20:05 #46 #848434

>>848430
Тогда лучше осиль пару абзацев о том как все настроить.

29 Сен, 20:26 #47 #848441

>>848430
>И не надо мне тут, это отличная среда
Может быть, но разработка на андройд нормально не поддерживается. Стул конечно сам выбирай, однако я советую студию.
Пару лет назад тоже сидел на эклипсах и думал нахуй мне эта студия, но для андройда она лучше. Во всем.

29 Сен, 22:26 #48 #848473

Аноны я тут штуку придумал. Что если сделать так:
1) Пилим активити как контейнер для фрагмента
2) Пилим из фрагмента view (как в mvp)
3) Вместо презентера у нас астивити.
4)???
5)PROFIT!

Ответы>>848491>>848498

29 Сен, 23:30 #49 #848491

>>848473
Ващет из коробки так и предпологается, только MVC и активити в качестве контроллера. Но в активити размазываются всякие говенные байнды к сервисам, onActivityResult, onPermissionRequest и тд. А еще какой-нибудь бродкаст ресивер затесался. И вместо двух хуков - байнда к вью и анбайнда получаешь в ебало кучу onCreate/onStart/onResume/onPause/onStop/onDestroy

30 Сен, 00:29 #50 #848497

>>848424
Скидывай свою реализацию, мы же уже обсуждали это.

30 Сен, 00:31 #51 #848498

>>848473
> Вместо презентера у нас астивити.
Ты изобрел колесо.
Вот ты и вернулся к гугловской архитектуре. Активити получается типичным god class, тестировать сложно и т.д.

30 Сен, 20:14 #52 #848673

Есть приложение где навигация сделана при помощи ViewPager.
Перелистывание отключено.
В одном фрагменте сидит гуглокарта и относительно неспешно грузится. Как бы мне сделать отложенную инициализацию?
Хотелось бы вообще отказаться от ViewPager, но чтобы была возможность выбрать - какие фрагменты сразу грузить и прятать, а какие позже.
Как такое сделать?

Ответы>>848683>>848695

30 Сен, 20:34 #53 #848683

>>848673
Гуглокарту можно инициализировать в фоновом потоке. Не помню точно как, но есть способ.
Про остальное не понял вопроса, хуйня какая-то.

30 Сен, 21:05 #54 #848695

>>848673
Аддишь франменты, но прячещь их.

30 Сен, 23:44 #55 #848771

Вопрос больше по паттернам. Есть Repository, который работает с одним типом объектов. Но сохранять их мне нужно в разных источниках по выбору (в файловой системе, на дропбоксе и т.д.).
Каким паттерном правильнее эту ситуацию организовать, если репозиторий предполагает инкапсуляцию выбора источника (т.е. saveFileinYourMomsMouth() нарушает)?

Ответы>>848773

01 Окт, 00:03 #56 #848773

>>848771
>в файловой системе
Это значит на телефоне? И что такое дропбокс?
мимонюфаг

Ответы>>848788>>848954

45 Кб, 1094x622

587 Кб, 1085x672

48 Кб, 1080x646

01 Окт, 00:14 #57 #848778

Недавно взбрело в голову мне, джава-программисту посмотреть что внутре у этих ваших андроид-приложений. Под руку попался "Мой МТС".
Залез я внутрь и чёт охуел как-то.

Костыль для VCS под названием dummy.txt, в ресурсах плохо ужатые баннеры с фотками в png повторяющиеся по 4 раза на 27 мб в сумме, плюс ещё обрубок какого-то вебсокетного чатика на JS и .swf-ка для него рядом.

Поясните, такая небрежность это норма в мобильной разработке? Это важно, потому что если так, то выходит что я охуенный андроид-девелопер.

Ответы>>848787>>848789>>848833

01 Окт, 00:16 #58 #848780

Аноны, установил студию на диск Д, но она спиздила целых 25 гиг на диске С, это нормально? Можно как-нибудь уменьшить потребление памяти на диске С?

Ответы>>848811

01 Окт, 00:35 #59 #848787

>>848778
> Поясните, такая небрежность это норма в мобильной разработке?
Create and run an empty activity project in Android Studio and I get a 38 MB folder with 1,175 files. We've just given up on elegance.
twitter.com/id_aa_carmack/status/771749108780523520

01 Окт, 00:38 #60 #848788

>>848773
Проследуйте в js-тред, пожалуйста.

01 Окт, 00:40 #61 #848789

>>848778
> Поясните, такая небрежность это норма в мобильной разработке?
Странные у тебя вопросы. Хороших разработчиков в любой сфере мало, хоть в php, хоть в c++.

01 Окт, 02:04 #62 #848804

Аноны, мне надо при старте фрагмента заюзать в нем circular reveal анимацию, но в каком месте мне это делать? сейчас делаю через хэндлер в onViewCreated с задержкой 200, но видно, что это слишком много, как быть?

Ответы>>848811>>848834

57 Кб, 732x183

01 Окт, 02:52 #63 #848811

>>848804
Уменьшить задержку.
>>848780
Открываешь SDK Manager и смотришь, что там за хуйни у тебя понаставлено. Вот тебе в качестве примера пикрилейтед: подхватили SDK, ARM-образ для эмулятора и что-то там для сосни. Так вот: сто процентов у тебя для нескольких версий андроида подхватились эмуляторы, снеси их.

Ответы>>848862

01 Окт, 09:37 #64 #848833

>>848778
Написанное студентами за еду 8 лет назад это явно не стандарт. Но говнокода под андроидом действительно море.

01 Окт, 09:38 #65 #848834

>>848804
В onResume тащемта например.

01 Окт, 11:46 #66 #848862

>>848811
А можно и стоит ли сносить эмуляторы вообще? Я все проги на телефоне тестирую все равно, т.к. на моем компе эмулятор очень медленно работает.

Ответы>>848870

01 Окт, 12:06 #67 #848870

>>848862
Сноси все образы тогда. И если студия создала тоже снеси.

01 Окт, 16:01 #68 #848954

>>848773
Да, на телефоне.
www.dropbox.com

01 Окт, 17:11 #69 #848974

Надоело велосипедить, нужна такая штука чтоб отдал туда Request какой нибудь, она его выполнила в бэкграунде и результаты вернула по слушателю или eventBus. Еще что бы можно было статус реквеста проверять.

есть что то похожее?

Ответы>>848976

01 Окт, 17:16 #70 #848976

>>848974
rxjava

Аноны, хочу сделать список и deteail view чтобы, когда есть место все было на одном экране(дефолтная штука), но при какой ширине такое делать или это надо делать только в лэндскейпе?

Ответы>>848977

01 Окт, 17:25 #71 #848977

>>848976
Шта?

Ответы>>848982

01 Окт, 17:59 #72 #848982

>>848977
https://material.google.com/layout/responsive-ui.html#responsive-ui-breakpoints
бля хорошо, что ты спросил, только щас увидел, что там написано про это, с 600dp надо такое делать

01 Окт, 18:06 #73 #848983

http://4pda.ru/2016/10/01/326066/
Это обсуждалось уже?

Ответы>>848984>>849095>>850825

01 Окт, 18:08 #74 #848984

>>848983
Норм, можно будет вкатится и наговнокодить горы.

Ответы>>848987

01 Окт, 18:24 #75 #848987

>>848984
да я думаю, для разработчиков ничего не поменяется, и все приложения будут совместимы

24 Кб, 1290x158

01 Окт, 20:11 #76 #849032

Пиздец, ну как этим говном пользоваться? И так еле работает, а после обновления IDE вообще все нахуй сломалось. Теперь даже проект не открывает.

Ответы>>849047

01 Окт, 20:39 #77 #849046

Котаны, как мне сделать чтобы Spinner реагировал на клик по элементу, который уже выбран?
Причем с первого раза, т.к. после переопределения метода setSelection только со второго раза клик срабатывает.

01 Окт, 20:50 #78 #849047

>>849032
Да нахуй этот android.dsl? И так норм.

01 Окт, 22:39 #79 #849089

Дядечки, выручайте

При сборке проекта сами собой в манифест добавляются
<android:uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<android:uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<android:uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

, которые приложению вроде как нахер не нужны. Активити только одно, вот импорты:
import android.os.Bundle;
import android.os.Message;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.RelativeLayout;
import android.os.Handler;
import com.badlogic.gdx.backends.android.AndroidApplication;
import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;
import com.google.android.gms.ads.AdListener;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdSize;
import com.google.android.gms.ads.AdView;

Что именно добавляет разрешения и можно ли от этого избавиться ?

Ответы>>849094>>849201

01 Окт, 22:57 #80 #849094

>>849089
Уже разобрался, отрубил вручную

01 Окт, 22:58 #81 #849095

>>848983
> http://4pda.ru/2016/10/01/326066/
> Это обсуждалось уже?
Иди нахуй.

Ответы>>849101

01 Окт, 23:24 #82 #849101

>>849095
Какой информативный пост.

Ответы>>849147>>850825

02 Окт, 01:47 #83 #849147

>>849101
Да вы заебали потому что, как белки-истерички на каждую желтую новость реагировать АНДРОИД ВСЁ

02 Окт, 03:15 #84 #849167

Начал изучать разработку на андроид, хотел чисто для себя сделать хеллоуворд, просто активити и 3 таба с иконками. Просто 3 блять таба на пустом активити. С иконками. Больше 100(!!!!!!) строк кода. СТО БЛЯТЬ. ТРИ ТАБА. Делал вот по этому мануалу http://www.androidhive.info/2015/09/android-material-design-working-with-tabs/. Я реально хочу разобраться в этом дерьме, но блять, как вы тут живете-то? У меня пригорело просто пиздец. Неужели нет способа проще?

Ответы>>849202>>849280>>849286>>849853

02 Окт, 10:03 #85 #849201

>>849089
С Е Р В И С Ы
Е
Р
В
И
С
Ы

Но это не точно. А еще libGdx потребовался бы, если бы ты пользовался externalFileHandler'ом

02 Окт, 10:05 #86 #849202

>>849167
Встречаются два монстра макаронного кода, джава и андроид, а им как раз. Вообще хуевый гайд, добавлять фрагменты в пейджер таким образом.

02 Окт, 11:55 #87 #849280

>>849167
Через пару недель пердолинга все устройство ведра будет казаться тебе донельзя логичным.

Ответы>>849284

02 Окт, 11:57 #88 #849281

Посоветуйте плз книгу по андроид разработке

02 Окт, 11:59 #89 #849284

>>849280
Да, сейчас уже все не кажется таким нелогичным дерьмом, но все равно смотрится диковато

51 Кб, 1000x711

02 Окт, 12:03 #90 #849286

>>849167
>Больше 100(!!!!!!) строк кода.
>как вы тут живете-то?
На Kotlin/Groovy пишем просто.

Ответы>>849322

02 Окт, 12:06 #91 #849287

Объясните, пожалуйста, почему так сильно смешаны части описания интерфейса на XML-файлах и программная часть? Нет способа просто декларативно описать иконки в табах, а не вставлять их onCreate?

Ответы>>849289>>849295

02 Окт, 12:15 #92 #849289

>>849287
>почему
Потому что каждаяиконка/тайтл/контент страниц ты получаешь с помощью адаптера, адаптер в иксмельке не создается. Вот и все. С databindg'ом можно извернуться и сделать все это более лаконичным. В xml ты определяешь структуру, наполнение в коде.

02 Окт, 12:31 #93 #849295

>>849287
>Нет способа просто декларативно описать иконки в табах
На все подобные вопросы есть один ответ:

Делай кастомную View

Ответы>>849300

02 Окт, 12:46 #94 #849300

>>849295
как ее делать?
мимо нуфаг

Ответы>>849339>>849348

02 Окт, 14:24 #95 #849322

>>849286
На Хаскелле.

02 Окт, 14:57 #96 #849339

>>849300
extends View или extends ViewGroup

Ответы>>849851

02 Окт, 15:06 #97 #849348

>>849300
https://developer.android.com/training/custom-views/index.html

https://developer.android.com/guide/topics/ui/custom-components.html

02 Окт, 15:53 #98 #849381

Ребята, помогите отсталому, как этот код реализовать в layout?

public static void main(String args[]){
String[] wordList = {"Помидор", "Абрикос", "Авокадо", "Айва", "Ананас", "Апельсин", "Арбуз", "Гранат", "Груша", "Карамбола"};
int Length = wordList.length;
int rand = (int) (Math.random() * Length);
String phrase = wordList[rand];
System.out.print(phrase);

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

Ответы>>849404>>852646

37 Кб, 591x261

02 Окт, 16:35 #99 #849404

>>849381
>Охота реализовать вывод случайного слова на другом экране при нажатии кнопки.
Берешь и без задней мысли реализовываешь :3

fun <T> Array<T>.random(): T = this[(Math.random() * size).toInt()]

02 Окт, 16:42 #100 #849409

Как перестать говнокодить? Может код ревью платный есть?

Ответы>>849494

02 Окт, 18:35 #101 #849494

>>849409
Скидывай свой код в тред, тебя тут бесплатно обосрут как по делу, так и просто так

02 Окт, 20:46 #102 #849601

>>846976 (OP)
Кто работает с RxBinding? Мне надо ловить евенты на EditText'е, но так чтобы пропускать первый эмит при создании фрагмента. Юзаю skip(1), но он работает только при первом создании, т.е. если перевернуть экран он не пропускает первый эмит. Как быть? Делаю unsubscribe в onDestroyView, какого хуя он запоминает все эмиты? И да, фрагмент ретеин, если что.

Ответы>>849617>>850081

02 Окт, 20:58 #103 #849617

>>849601
Почему бы тебе не обсерватории ПОСЛЕ того как ты ставишь свой текст в ручную?

Ответы>>849625

02 Окт, 21:06 #104 #849625

>>849617
что?

Ответы>>849706

02 Окт, 21:07 #105 #849628

Если я пройду два курса на Udacity я смогу вкатиться в андроид?
Какие плюсы и минусы у такого подхода?

Ответы>>849656

02 Окт, 21:47 #106 #849656

>>849628
Зависит от курса, если там мало практики, то он нахуй не нужен.

Ответы>>849673

02 Окт, 22:06 #107 #849673

>>849656
Курс от самого гугла, на твитторе посоветовали.

02 Окт, 22:57 #108 #849706

>>849625
Ты сказал пропускать эмит при создании, значит если ты подпишешься после, то ты его не получишь.

Ответы>>849710

02 Окт, 22:59 #109 #849710

>>849706
в он старте подписываться? че то былокод

Ответы>>849714

02 Окт, 23:05 #110 #849714

>>849710
> че то былокод
Тебе в самый раз.

03 Окт, 10:03 #111 #849850

А хули мы нумерацию проебали ? Давайте может продолжим старую ?

03 Окт, 10:05 #112 #849851

>>849339
А лучше что-нибудь более конкретное, чтобы трахаться поменьше. Можешь посмотреть как это деается на примере сэмплов squareup/flow, там будет все довольно понятно с custom view

03 Окт, 10:10 #113 #849853

>>849167
А для тебя 100 строк - так много ? В среднем view-компоненте идет 400+ строк, в презентере - почти столько же, в мэнэджере ( читай синглтон модельке ) - под пару кусков. Все это еще без DI с прочими ништяками.

03 Окт, 12:59 #114 #849922

Не обновлял IntelliJ двадцать лет, решил все таки накатить новую версию. И СУКА ЕБУЧИЙ ГРАДЛ ПОРВАЛ МНЕ ЖОПУ НАХУЯ ОН НУЖЕН БЛЯДЬ РАНЬШЕ ЗАЕБИСЬ ВСЕ РАБОТАЛО БЕЗ ЕБЛИ ЩАС ЖЕ КАКОЕТО ГОВНО КАЧАЕТСЯ ПОСЛЕ КАЖДОГО ПУКА БЛЯДЬ СИНХРОНИЗИРУЕТСЯ ПО 5 МИНУТ СУКА АНУС ГОРИТ
Какая последняя версия IntelliJ без градла, посоны?

Ответы>>849931>>849996

03 Окт, 13:17 #115 #849931

>>849922
Как ты собрался без грейдла кодить под ведроид? Тут проблема не в грейдле, а плагине который заставляет его часто синкаться, хз как это починить, предлагаю тебе пердолится в виме/саблайме/емаксе с консолькой. Синкаться будет тогда когда нужно.

Ответы>>849979

03 Окт, 14:23 #116 #849979

>>849931
Нашел, 2016.1.4 еще без всяких злоебучих градлов работает. Андроид студия говно какое-то, в течение 2х или 3х лет несколько раз пытался с IntelliJ перекатиться, вроде те же яйца но привкус индусского говнеца явственно чувствуется.

Ответы>>849981>>849993>>849996

03 Окт, 14:27 #117 #849981

>>849979
Ну удачной настройки мавена тогда.

03 Окт, 14:38 #118 #849993

>>849979
>2016.1.4
Некочайте, оно просто старый проект нормально открыло. Пиздец, за что мне всё это.

03 Окт, 14:42 #119 #849996

>>849979
>>849922
>>848397
С какими даунами я сижу в одном треде.

21 Кб, 381x527

03 Окт, 15:22 #120 #850006

Короче вот, хеловорлд здорового человека и градлозависимого. Автор этих строк стар и ему сложно угнаться за всеми этими хипстерскими веяниями, он не понимает почему нельзя создать хэловорлд без подключения к интернету и почему какая то хуйня перезаписывает поля манифеста.
IntelliJ IDEA Community Edition 15.0.6 - мой выбор.

Ответы>>850008>>850013

03 Окт, 15:27 #121 #850008

>>850006
Правильно, нахуй системы сборки. Это всё от лукавого. Даёшь говнокод.

Ответы>>850011

03 Окт, 15:31 #122 #850011

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

03 Окт, 15:37 #123 #850013

>>850006
И как ты саппорт лайбрари подключать собрался?

Ответы>>850016

03 Окт, 15:49 #124 #850016

>>850013
Он там мышкой подключается.

Скрипт для браузера на смартфоне 03 Окт, 16:14 #125 #850024

Анон, я нуб в программировании.

У меня есть бытовая проблема. Задача - нужен скрипт, чтобы сохранять ссылки в archive.is. т.е. сижу на krautchan.net/catalog/int, вижу трежтред, хочу елл сохранить - я задеждиваю на нем свой палец и во всплывающем окошке(браузер хром на андроиде) выбираю пункт - сохранить скрин той страницы, что по ссылке, в archive.is

Рельно такой написать? С чего начать? Ч не программист, разве что в школе на бейсике писал.

Ответы>>850028

03 Окт, 16:25 #126 #850028

>>850024
Конечно реально, самый сложный момент будет именно в том что бы запихнуть урл им в формочку, не нашел у них вменяемого api. А так сделаешь приложеньку с Activity, которому через intent передается урл, а он дальше в интент сервисе ебет архив что бы тот ссылку сохранил, доступно будет по кнопочке шейр.

Ответы>>850032

03 Окт, 16:27 #127 #850032

>>850028
Окей, с чего начатт?

Ответы>>850033

03 Окт, 16:28 #128 #850033

>>850032
С джавы

Ответы>>850035

03 Окт, 16:30 #129 #850035

>>850033
В смысле подучить язык? Я думал будет инструкция коротенькая как поправить код и добавить пункт в выплывабщем меню и всё

Ответы>>850038>>850040

03 Окт, 16:32 #130 #850038

>>850035
Может еще сделать все за тебя?

Ответы>>850057

03 Окт, 16:32 #131 #850040

>>850035
Ну гугли сэмплы, не такая уникальная задача. Можно посмотреть в сторону js (нет), ибо больше под твои цели подходит

Ответы>>850057

31 Кб, 1166x585

03 Окт, 16:40 #132 #850044

Аноны как пользоватся апи других сервисов? Как это вообще работает? Я думал что мне дадут некие ф-ции для работы с бд, сам доступ к бд, но мне дали пикр. Как подключать это к андроид, что это вообще такое? Где можно почитать о работе с внешними апи, подскажите пожалуйста, и обьясните в двух словах как это работает приблизительно.

нуфаг

Ответы>>850048

03 Окт, 16:48 #133 #850048

>>850044
>Я думал что мне дадут некие ф-ции для работы с бд, сам доступ к бд
А хуев в панамку тебе не напихать? От тебя специально спрятали кишки что бы ты голову не ломал. Гугли что такое REST Api.

Ответы>>850049

03 Окт, 16:49 #134 #850049

>>850048
Благодарю.

03 Окт, 17:11 #135 #850057

>>850040
>>850038
Ну с чего начать? Скачать какую-то программу для влазания в недры приложения гуглхром фор андроид?

Ответы>>850061

03 Окт, 17:25 #136 #850061

>>850057
Нет, тебе в хром лезть не нужно. Почитай про Intent, Activity, IntentService.

03 Окт, 17:42 #137 #850081

>>849601
бамп

03 Окт, 21:44 #138 #850192

>>846976 (OP)
Можно ли использовать DI фреймворки(внедрение зависимостей) для всякого андроидного говна (фрагменты, адаптеры) или их получится заюзать только для моих вспомогательных классов?

Ответы>>850216>>850222

03 Окт, 22:26 #139 #850216

>>850192
Можно и нужно.

Ответы>>850254

03 Окт, 22:33 #140 #850222

>>850192
Нельзя и ненужно.

92 Кб, 540x720

04 Окт, 00:12 #141 #850254

>>850216
Попробовал прикрутить даггер 2.
Мне нужно чтоб у меня был синглтоновый адаптер и он инжектился в несколько одинаковых фрагментов, поставил @Singlton везде где только можно, но чет он нихуя не singlton, ЧЯДНТ?

Ответы>>853739

04 Окт, 02:09 #142 #850284

Аноны, помогите с Rx. Кто-нибудь вообще пользуется groupBy?

У меня есть ответ от сервера (VKResponse), который может быть либо VKApiPhoto, либо VKError (которая тоже может держать в себе данные, экзепшн и прочие прелести). Хочется чтобы для каждого варианта был сабскрайбер.
Все решения, что я видел - подрубают дополнительный Subscriber, внутри которого вытаскивают GroupObservable, и уже там вешают на него "свой" сабскрайбер.
Можно ли как-то пилить вне сабскрайберы для каждого GroupObservable?

Примерно то, что хочется:

....groupBy()
.subscribeGroup(new Subsciber<Type1>)
.subscribeGroup(new Subsciber<Type2>)

Ответы>>850335

04 Окт, 09:35 #143 #850335

>>850284
В чем проблема работать с VKError в сабскрайберском onError?

Ответы>>851267

04 Окт, 16:46 #144 #850525

Кто знает как сделать, чтобы при нажатии на ImageView она увеличивалась, а при повторном нажатии становилась первоначальных размеров? Может кто какие либы знает для этого?

Ответы>>850531

04 Окт, 17:00 #145 #850531

>>850525
> хуита на 5 строчек кода
> Может кто какие либы знает для этого
В жс тред с таким.
Вешаешь ебанный клик листнер и делаешь setScale.

Ответы>>850583

04 Окт, 18:35 #146 #850583

>>850531
Ты почему такой злой? Как будто сам со сложными задачами никогда не сталкивался. Взял бы да посоветовал либу

90 Кб, 1905x983

04 Окт, 20:46 #147 #850688

Господа, мне требуется ваша помощь.
В одном проекте нужно подправить пару строк, но когда я его открыл, то понял, что не могу собрать. Ошибка пикрелейтед, сам с андроидом и gradle, я сталкиваюсь первый раз, пишу говнокод на java, поэтому в упор не могу понять что хочет. Только удалось сообразить, что ему не хватает adnroid () в build.gradle, но вроде в корневой папке эта строка не нужна, да и если добавить будет другая ошибка.

Готов даже подкинуть анону на пиво, если кто поможет решить. Можете писать на мыло fakedHumailprogramANUSgmam9QilPUNCTUMcbH{om

Ответы>>850692

04 Окт, 20:56 #148 #850692

>>850688
покажи /app/build.gradle

Ответы>>850693

36 Кб, 688x683

04 Окт, 20:59 #149 #850693

>>850692
Вот он

Ответы>>850697

19 Кб, 723x287

04 Окт, 21:04 #150 #850697

>>850693
Кстати заметил /app/build.gradle вот такую проблему

Ответы>>850701

04 Окт, 21:07 #151 #850699

Кто обещал мне код обосрать?

https://codeshare.io/zAnK9

Ответы>>850738>>850943>>850954

04 Окт, 21:11 #152 #850701

>>850697
Ну это я исправил, изменил версию на актуальную, но главной проблемы не решило

Ответы>>850718

04 Окт, 21:50 #153 #850718

>>850701
Давай сюда

1) Результат gradlew build (или gradlew.bat build)
2) Содержимое settings.gradle
3) build.gradle всех проектов перечисленных в settings.gradle

Ответы>>850763

04 Окт, 22:06 #154 #850738

>>850699
Осталось сделать MVP и подумать над переворотами

Ответы>>850746

04 Окт, 22:14 #155 #850746

>>850738
А так норм?
На что вообще стоит Rx вешать?

Ответы>>850754>>850773

04 Окт, 22:25 #156 #850754

>>850746
На хуй.

04 Окт, 22:27 #157 #850759

Я чет так и не понял, 8 джаву можно использовать или нет под андроидом?

Ответы>>850781

58 Кб, 638x994

04 Окт, 22:30 #158 #850763

>>850718
Прикрепляю выхлоп, структуру проекта с нужными файлами залил сюда http://rgho.st/8NvbvFrFR

Ответы>>850765

80 Кб, 637x1019

04 Окт, 22:33 #159 #850765

>>850763
Еще вот выхлоп с debug, если будет полезен

Ответы>>850795

04 Окт, 22:47 #160 #850773

>>850746
ну из rx биндингов я юзаю только изменения edittext'a. Слушать так клики какая то хуйня, как по мне, т.к. там обычно вызывается метод презентера и намного лучше выглядит упрощенная лямбда, хотя если очень сложный ui, то rx норм

04 Окт, 22:56 #161 #850781

>>850759
Байткод 8-й джав - нет.

04 Окт, 23:23 #162 #850795

>>850765
Ошибка судя по всему в файле iptv/build.gradle
> compile project(':..:ExoPlayer-master:library')
Такой проект вообще есть? Он должен лежать в той же папке что и весь проект.

57 Кб, 512x512

05 Окт, 01:09 #163 #850825

>>848983
>>849101

Ну вот, презентация прошла. Никакой АНДРОМЕДЫ — УБИЙЦЫ АНДРОЙДА и близко нету. Ссу в рот дауном, распространяющим ссылки на всякое говно.

Ответы>>850909

951 Кб, 928x1284

05 Окт, 01:16 #164 #850829

Ну что, аноны, что скажите про эту ссанину копию гейфона за $1k?

Ответы>>850830

05 Окт, 01:21 #165 #850830

>>850829
за 450 купил бы

Ответы>>850831

05 Окт, 01:26 #166 #850831

>>850830
ты бы и за собаку купил

05 Окт, 09:34 #167 #850909

>>850825
Ты дауненок? Это была презентация новых устройств.

Все софтверные нововведения будут на Google IO

Ответы>>850971

05 Окт, 11:28 #168 #850943

>>850699
Стоит быть аккуратным с Schedulers.newThread()...

Ответы>>850954>>850970

05 Окт, 11:43 #169 #850954

>>850699
>>850943
Реально, на каждый клик нет необходимости создавать тред Schedulkers.io отлично для запросов в сеть подойдет, а еще если у тебя возникнет ошибка то все завалится, так как в subscribe ты не хендлишь ошибку никак, doOnError ее не остановит.

Ответы>>850970

05 Окт, 12:31 #170 #850970

>>850954
>>850943
Спасибо.

Ты имел в виду что то такое?
https://codeshare.io/ezt8h

Ответы>>850976

05 Окт, 12:34 #171 #850971

>>850909
А, то есть ты всё ещё АНДРОМЕДЫ ждёшь? Пиздец необитаемые.

Ответы>>850974>>850977>>851048

05 Окт, 12:37 #172 #850974

>>850971
А в чем проблема андромеды? Просто убирают ChromeOS мерджа его с ведром, называют не ведром, а ведромедой.

05 Окт, 12:39 #173 #850976

>>850970
Да, в действительности там посложнее првоерка, но так оно хотя бы не упадет с эксепшном.

Ответы>>850978

05 Окт, 12:39 #174 #850977

>>850971
> необитаемые
Необучаемые *

Бля, Т9.

05 Окт, 12:43 #175 #850978

>>850976
Ты о том что туда в параметре приходит тип эксепшена и надо его нормально обрабатывать?

Ответы>>850979

05 Окт, 12:44 #176 #850979

>>850978
Конечно, там может быть ошибка парсинга респонса, отсутствие интернета, несуществующее имя, или просто неверный пароль.

05 Окт, 12:46 #177 #850982

Аноны, подскажите по Rx.

Дано: Observable<Boolean> с единственным значением true/false, и два Observable<Integer>. Если первый Observable имеет значение true, то нужно вернуть первый целочисленный Observable, иначе — второй. Кроме того, если в целочисленном Observable встретится число больше 100, то нужно кинуть исключение.

Пример 1:
Ввод: (true), (6, 11, 15), (10, 350, 98)
Вывод: (6, 11, 15)

Пример 2:
Ввод: (false), (6, 11, 15), (10, 350, 98)
Вывод: (10, Exception)

Как такое сделать? Вот мой вариант, но он неверно работает в случае true

booleanObservable
.flatMap(aBoolean -> aBoolean ? firstIntObservable : secondIntObservable)
.flatMap(integer -> integer >= 99 ? Observable.just(integer) : Observable.error(new Exception()));

Ответы>>851058

05 Окт, 14:42 #178 #851048

>>850971
>А, то есть ты всё ещё АНДРОМЕДЫ ждёшь?
В общем нет. Конкретные оси, меня мало интересуют.

Я жду Kotlin Native, что бы можно было комфортно кросплатформу разрабатывать.
BugVM/RoboVM (открытый форк) и IntelMOE конечно неплохи, но они слабо развиваются.

Ответы>>851053

sage 05 Окт, 14:51 #179 #851053

>>851048
Ясно. Всё ещё хуже, чем я предполагал.

Ответы>>852093

05 Окт, 15:00 #180 #851058

>>850982
booleanObservable
.flatMap { if (it) firstIntObservable else secondIntObservable }
.doOnNext { if (it > 100) throw Exception() } // если число больше 100, то нужно кинуть исключение.

Ответы>>851066

05 Окт, 15:12 #181 #851066

>>851058
О, точно, так работает. Спасибо.

05 Окт, 15:17 #182 #851070

Аноны, чем отличается Pause и Stop? Тоесть, в каких случаяех приложение паузится, а в каких останавливается?

Ответы>>851083

390 Кб, 1018x440

sage 05 Окт, 15:26 #183 #851083

>>851070
Погуглить не пробовал?

Ответы>>851086

05 Окт, 15:28 #184 #851086

>>851083
Не смог, спасибо за пик.

05 Окт, 16:04 #185 #851107

Сап, по курсачу нужно написать легковесный клиент для OneNote. Запилил скелет, подключил LiveSdk, доволен жизнью в общем. Вопрос следующий - работал ли кто ? Может есть у кого вменяемые доки по LiveSdk ? А то их сэмпл сам по себе пиздец лютый, да еще и большую часть методом тыка приходится чекать...

05 Окт, 19:56 #186 #851209

Залил наконец приложение погоды для стажировки из прошлого оп треда, сука как же я заебался с разметкой и дизайном, и до сих пор все говно плывет на разных диагоналях и криво смотриться.
https://github.com/Compressor/YouOwnForecaster

Реквестирую критики у квалифицированных двачедевелоперов и следущее задание у этого >>848421 анона

Ответы>>851210>>851258>>851409>>851781

05 Окт, 19:58 #187 #851210

>>851209
>смотрится
>следующее
Грамманацибыстрофикс

05 Окт, 21:11 #188 #851240

>>id кэмэлкейсом
>>логика в адаптере

Ответы>>851302>>851358

05 Окт, 21:11 #189 #851241

Анон, я делал http запрос с помощью стринга используя вот этот гайд:
https://spring.io/guides/gs/consuming-rest-android/
Потом переделал URI запроса на тот, что мне нужен там только не http а https и все крашнулось к хуям. Дело в том что я делал https запрос? Использование библиотеки вообще нормальное дело? Или же лучше просто навернуть гайда от гугла, как я понял там библиотеки не используются:
https://developer.android.com/training/building-connectivity.html

нуфаг

Ответы>>851242>>851256

05 Окт, 21:12 #190 #851242

>>851241
Спринга*

05 Окт, 21:29 #191 #851256

>>851241
Retrofit

05 Окт, 21:31 #192 #851258

>>851209
Мы вам перезвоним.

Ответы>>851302>>851471

05 Окт, 21:49 #193 #851267

>>850335
В том, что VKError не наследуется от Throwable

Ответы>>851326>>851341

05 Окт, 22:23 #194 #851302

>>851240
>>id кэмэлкейсом
Вкусовщина
>>логика в адаптере
Это да, я так понимаю логику запроса оборачивают в специальный класс и пихают туда все зависимости? Синглтоном хуячить или статик методами?
>>851258
Предсказуемо

Ответы>>851325>>851362

05 Окт, 22:40 #195 #851325

>>851302
Почитай про чистую архитектуру, солид.

05 Окт, 22:41 #196 #851326

>>851267
Ну так просто кинь исключение, если ошибку вк получаешь.

05 Окт, 23:08 #197 #851341

>>851267
Ну так оберни в эксепшон.

Ответы>>851431

05 Окт, 23:46 #198 #851358

>>851240
>логика в адаптере
А как надо правильно делать? Реализовывать логику в каком-нибудь HuiGovnoAdapterUtils и инжектить его в адаптер?

Ответы>>851363

05 Окт, 23:59 #199 #851362

>>851302
Ну в гугловых туториалах кэмэлкейса нет, так что это считай дефолт.

06 Окт, 00:01 #200 #851363

>>851358
Адаптер должен делать ровно одну вещь: получать коллекцию объектов и предоставлять её в форме, необходимой для UI (ListView, RecyclerView etc) — адаптировать.

06 Окт, 07:29 #201 #851409

>>851209
Заголовки для гит-коммитов надо писать в императиве.

Ответы>>851487>>851513

06 Окт, 10:05 #202 #851431

>>851341
Так и сделал. Просто сам по себе VKError в себе сожержит кучу всякого говна: HTTPException, или код ошибки вк и т.д.
https://github.com/VKCOM/vk-android-sdk/blob/master/vksdk_library/src/main/java/com/vk/sdk/api/VKError.java
Хотелось всё это возвращать в onNext отдельного сабскрайбера

06 Окт, 12:00 #203 #851471

>>851258
Чому?

06 Окт, 13:01 #204 #851487

>>851409
И их должно быть больше пяти

Ответы>>851513

06 Окт, 13:37 #205 #851513

>>851409
>>851487

Типа вместо added trap feature писать add trap feature, fix allah, add new yoba?

>И их должно быть больше пяти
Если меньше то типа не коммитить? я как то был на курсах в конторе и там советовали коммитить каждый пук, типа один коммит отражает одно логическое изменение.

Реквестирую у анонов какую-нибудь ссылку где по хардкору объясняют как лучше работать с гитом, коммитами, когда ветвить проекты и все такое, best practices. В гугле не банили, хочется сразу ультрагодноты.

Ответы>>851516

06 Окт, 13:41 #206 #851516

>>851513
http://chris.beams.io/posts/git-commit/

Ответы>>851552>>851574

06 Окт, 13:45 #207 #851522

Чем табличку лучше выводить? Через листвью городить? Или есть что-то готовое есть?

06 Окт, 14:38 #208 #851552

>>851516
А теперь плиз что-нибудь подобное, но по организации ветвления, и стилю ведения проекта на гитхабе. Можно ли, например, лить неработающий код в пустой репозиторий, в ветку девелопмента, потом дорабатывать и вываливать в мастер?
Как организуют это в конторах, где проект начался с нуля?

Ответы>>851574

06 Окт, 15:33 #209 #851574

>>851516
Удваиваю
>>851552
Посмотри git flow и его описания. Даже если не станешь использовать его самого, можно хоть почерпнуть стиль ветвления.

06 Окт, 16:40 #210 #851597

Сап, суть вопроса - мое непонимание работы с OAuth2. Скажем, есть ретрофитовский сервис, берем мы значится, GET метод на определенный адрес, вызываем его, и че дальше, вебвьюха сама появится или нужно чет сделать ?

Ответы>>851679

06 Окт, 18:51 #211 #851679

>>851597
Ретрофит сам ничего от запроса не откроет.

Ответы>>852058

06 Окт, 21:15 #212 #851781

>>851209
> if (isDay(currentCity.getTime())) drawableID = R.drawable.city_info_background_day;
> else drawableID = R.drawable.city_info_background_night;
Здесь стоило фигурные скобки заюзать. Не экономь строки. If можно оставлять без фигурных скобок если он совсем короткий и тривиальный, типа if (isImHuitka) cool();
Хотя джава код конвеншинс рекомендует вообще никогда не опускать фигурных скобок.

36 Кб, 289x350

25 Кб, 272x171

06 Окт, 23:40 #213 #851903

Случайно отправил в старый тред, продублирую сюда
Господа, как мне динамически подгонять высоту и ширину вьюшки, чтобы она идеально вмещала в себя полученное из интернета изображение? Пикрелейтед то, что у меня выходит и сейчас и то, что я в итоге хочу получить.

Ответы>>851950

07 Окт, 00:49 #214 #851950

>>851903
set scale type

Ответы>>852200

07 Окт, 09:56 #215 #852058

>>851679
Уже разобрался, сделал все через б-гомерзкий WebView... К слову, что есть ChromeWebView и чем он ништячнее ?

Ответы>>852062

07 Окт, 10:01 #216 #852062

>>852058
Ну так ты полагаешься на встроенный в платформу вебвью, может быть забаганым или старым, а так таскаешь свой.

07 Окт, 11:21 #217 #852092

Как в современном ведре делают чаты?
Пока приложение видимо свой сокет, когда приложение запаузено - через гугл пуши?

Ответы>>852114

07 Окт, 11:22 #218 #852093

>>851053
Хуясно. Kotlin Native разрабатывается. Правда, непонятно, хули с этого толку для андроида.
мимодругой

Ответы>>852107

07 Окт, 11:57 #219 #852107

>>852093
>хули с этого толку для андроида
Околонулевой, что-то уровня HaskellActivity, только на котлине.

Ответы>>852274

07 Окт, 12:14 #220 #852114

>>852092
есть такая штука классная - Atlas SDK и Layer SDK, погугли. Мы сейчас ее используем в проекте

Ответы>>852117

07 Окт, 12:23 #221 #852117

>>852114
Нет необходимости в каких-то ссаных вьюшках или штуки которая прячет от меня нутро чата. Я просто хочу узнать правильный ли это (сокет в сервисе пока система не грохнет, а потом на пушах) подход?

Ответы>>852120>>852171

07 Окт, 12:27 #222 #852120

>>852117
лучше вместо пуша сокет с sticky сервисе держать, как по мне...

Ответы>>852146

07 Окт, 13:05 #223 #852146

>>852120
Оно-то может и лучше. Но Doze прихлопнет его.

07 Окт, 13:33 #224 #852171

>>852117
А почему тогда не сразу на пушах?

Ответы>>852192

07 Окт, 13:46 #225 #852182

Смотрю гитхабы, и замечаю, что многие девелоперы хуярят кучу интерфейсов и абстрактных классов в своих проектах, и оперируют абстракциями. Это нормально, что я пишу обычный код с зависимостями на классах - а уже потом хуярю под всё это интерфейсы, и выношу общую логику?

Ответы>>852192>>852196

07 Окт, 14:02 #226 #852192

>>852182
Нет.
>>852171
Многа пушей будет. Да там не только сообщения, через те же сокеты гоняется звук и видео, фотки.

07 Окт, 14:07 #227 #852196

>>852182
Пофиг, пока ты нюфаг, тебя ничто не спасет, ты же не понимаешь сути "зачем это делают".
Даже если ты будешь все делать через интерфейсы - у тебя все равно в итоге будут макароны.

Тут нужно подходить с более высокого уровня.
Читай книги (смотри youtube) на тему проектированию архитектуры, DDD, UsecaseDD.

Ответы>>852236

07 Окт, 14:14 #228 #852200

>>851950
С этим параметром я возился, он не дает нужного эффекта. В итоге мне помогло поставить android:adjustViewBounds="true" в самом имейджвью.

Ответы>>852209

07 Окт, 14:30 #229 #852209

>>852200
Херово ты возился, centerInside и все.

07 Окт, 14:45 #230 #852222

Аноны доставьте понятных и непротухших гайдов по ретрофит, плес.

Ответы>>852225

07 Окт, 14:47 #231 #852225

>>852222
https://futurestud.io/tutorials/retrofit-getting-started-and-android-client

Ответы>>852226

67 Кб, 604x604

07 Окт, 14:49 #232 #852226

>>852225
Спасибо

07 Окт, 15:06 #233 #852236

>>852196
Проблема то в другом. Я понимаю зачем это нужно, и не совсем уж ньюфаг, есть пара месяцев работа с AbstractSingletonProxyFactory.
И если на серверке легко построить зависимости на абстракциях - то тут это сделать сложнее. Я просто не могу сходу нахуярить все нужные методы и типы данных, с которыми они будут взаимодействовать. Когда начинаю писать код - выясняется, что хуйня икс внутри метода реализуется с некоторыми нюансами, а метод лучше сделать слегка другим.

Ответы>>852256>>852328

07 Окт, 16:05 #234 #852256

>>852236
Держи нас в курсе.

07 Окт, 16:27 #235 #852274

>>852107
Я и говорю: Kotlin Native делается, но не для андроида.

Ответы>>852276

07 Окт, 16:31 #236 #852276

>>852274
Для платформы хачкела пишешь?
Транслируешь javakotlin код в монады?

07 Окт, 17:52 #237 #852328

>>852236
>Я просто не могу сходу нахуярить все нужные методы и типы данных
Да не садись ты сразу код писать - спроектируй на бумажке, определи доменную модель.

>Когда начинаю писать код - выясняется, что хуйня икс внутри метода реализуется с некоторыми нюансами,
Если проектируешь сверху вниз, с учетом "инверсии зависимостей",
то выясняется что проблемы кода на низком уровне не должны затрагивать высокоуровневый код
и его можно потом менять не перехреначивая весь проект.

Совет: представь что тебе наняли фрилансером и просят "оценить сколько займет реализация приложения?".
- Можешь ли без закладывания огромных рисков определить затраты в чел/днях?
- Можешь ли ты разбить на подзадачи для других разработчиков?
- Нет ли НЕясных моментов в реализации чего либо (возможно стоит написать тестовый код/тесты)?
Если не можешь ответить на эти вопросы утвердительно, значит еще рано писать код.

=== ВАРИАНТ 2 ===
Попробуй TDD
Вот посмотри это видео https://www.youtube.com/watch?v=8u6_hctdhqI

Ответы>>852356>>853738

07 Окт, 18:22 #238 #852356

>>852328
Хули ты всё умничаешь? Сука, ты че, пидор?

Ответы>>852366

07 Окт, 18:41 #239 #852366

>>852356
Нет, я просто люблю на Kotlin программировать :3

Ответы>>852371>>852679

07 Окт, 18:53 #240 #852371

>>852366
Чем дольше живу, тем больше убеждаюсь в том, что на Котлине одни дауны программируют.

Ответы>>852403>>852679

07 Окт, 19:30 #241 #852403

>>852371
И много ты знаешь таких людей?

Ответы>>852411

07 Окт, 19:55 #242 #852411

>>852403
Я знаю много таких. Но не людей.

189 Кб, 736x736

07 Окт, 20:10 #243 #852416

Как это не смешно звучит но мне что-то совсем андроид перестал нравиться. Причем как api так и сами телефоны. Не нравится этот глючный тормозной интерфейс, подлагивания, зависания, не нравится написанное индусней api, уже и так сижу на макбуке, поэтому куплю седьмой айфончик и буду радоваться жизни. Но все равно буду продолжать писать под говноид, (быдлу ведь тоже нужны приложения), да и больше ничего я не умею кодить кроме него, а сам для себя как господь буду пользоваться божественной iOS

Ответы>>852426

sage 07 Окт, 20:18 #244 #852426

>>852416
Держи нас в курсе.

Ответы>>852431

07 Окт, 20:26 #245 #852431

>>852426
Ну а что не так что ли? Или ты не замечал что на андроид ВСЕГДА эстимейты выше в 1.3-1.5 раза?

Ответы>>852433

sage 07 Окт, 20:28 #246 #852433

>>852431
Я к тому, что всем похуй, что тебе там перестало нравиться и что ты будешь делать.

Ответы>>852439

24 Кб, 250x291

07 Окт, 20:33 #247 #852439

>>852433
>покпокпок
Было бы похуй ты бы мне не отвечал, а так у нас тут джентльменский клуб андроид разработчиков, травим свои байки про андродовское житье-бытье, поэтому мой жжшечный пост вполне к месту.

08 Окт, 02:37 #248 #852646

>>849381
> андройде
> й
У вас тут за такое не отправляют на парашу что ли?

Ответы>>852659>>852693

08 Окт, 03:20 #249 #852659

>>852646
Адекватные аноны его просто проигнорировали, один лишь котлинодаун выскочил. Но его не надо на парашу, его и так жалко.

08 Окт, 07:37 #250 #852673

Сап, андроидо-боги. Прочитал Head First Android, сейчас прохожу курс на udacity с погодным приложением. Куда двигаться дальше? Хочется услышать мнение опытных анонов.

Ответы>>854558

08 Окт, 09:02 #251 #852679

>>852366
Дай пять, бро.

>>852371
Пшол вон, ретроград.

10 Кб, 212x212

08 Окт, 10:03 #252 #852693

>>852646
>У вас тут за такое не отправляют на парашу что ли?
Да всем похуй, кроме неадеквата который сажей отвечает и агрится на всех видимо девочки не дают.

89 Кб, 650x650

08 Окт, 13:06 #253 #852768

Что происходит с асинхронными задачами (выборка из SQLite DB, запрос к REST API), когда:
1) пользователь сворачивает приложение?
2) убивает приложение через диспетчер?

Ответы>>852775>>853510

08 Окт, 13:15 #254 #852775

>>852768
1) ничего, они продолжаются
2) убиваются вместе с процессом
А ты что ожидал?

Ответы>>852786

264 Кб, 558x420

08 Окт, 13:24 #255 #852786

>>852775
Спасибо, анон!

09 Окт, 20:22 #256 #853481

После вызова finish в активити, если запустить эту активити снова при помощи startActivity до вызова onDestroy что произойдет:
1) onCreate вызовется
2) не вызовется и всё пойдет по пизде

Ответы>>853506>>853510>>853573

09 Окт, 21:04 #257 #853506

>>853481
> запустить эту активити снова при помощи startActivity
Ты не сможешь запустить эту активити. Будет создан новый экземпляр. Соответственно, первый вариант, всё ок.

Ответы>>853573

09 Окт, 21:05 #258 #853510

>>852768
>>853481
Это какие-то вопросы с собеседования или что?

Ответы>>853544

09 Окт, 21:31 #259 #853544

>>853510
Нет

Ответы>>853556

09 Окт, 21:39 #260 #853556

>>853544
Пидора ответ.

09 Окт, 21:52 #261 #853573

>>853506
>>853481
Да я баг словил странный:
1) В onCreate активити #1 запускается сервис и биндится
2) По нажатию кнопки стопается сервис, вызывается finish, в onDestroy unbind вызывается, вызывается startactivity #2
3) Юзер возвращается на активити #1 через startActivity
3) В итоге ссылка на сервис = null.
Сервис забиндился и в этот момент уничтожился? Что это было?
Причем такой баг очень сложно словить.

Ответы>>853589

09 Окт, 22:03 #262 #853589

>>853573
с чего ты взял, что он забиндился?
BIND_AUTO_CREATE юзаешь?

Ответы>>853599

09 Окт, 22:14 #263 #853599

>>853589
У меня всё остальное (фрагменты, разметка) грузятся после того, как забиндился сервис, т.к. им нужна ссыль на сервис.
Использую BIND_IMPORTANT, т.к. сервис у меня foreground и BIND_AUTO_CREATE приводит к убийству сервиса сисиемой через некоооое время, это недокументированная вещь, но так оно и есть.

Ответы>>853603

09 Окт, 22:18 #264 #853603

>>853599
Про foreground service и BIND_IMPORTANT: http://stackoverflow.com/questions/6645193/foreground-service-being-killed-by-android

10 Окт, 03:22 #265 #853738

>>852328
>Попробуй TDD
Мне больше SODD по душе.

Ответы>>853741>>853771

10 Окт, 03:28 #266 #853739

>>850254
Покажи свой код, тебе скажу куда тебе надо синглтон воткнуть

10 Окт, 03:57 #267 #853741

>>853738
А мне FNTRB.

361 Кб, 500x656

10 Окт, 07:57 #268 #853771

>>853738
>Мне больше SODD по душе.
Тогда советую книгу пикрил

Ответы>>853804

10 Окт, 10:11 #269 #853804

>>853771
Спасибо, она была нужна когда я писал автоматический парсер SO, теперь парсер сам пишет мне код с SO

10 Окт, 10:21 #270 #853808

Уже как 6 лет хуярю на дотнетике. Всегда интересовала разработка под мобилки. Поясните за Xamarin. Достойная замена ванильке? Или лучше все равно осилить жабу со всем вытекающим?

Ответы>>853811>>853828>>853833

10 Окт, 10:26 #271 #853811

>>853808
Приложения, написанные на Xamarin, выглядят, как хуй, а внутри них вечно что-то отваливается.
Лучше всего попробуй написать на досуге приложение из пары страничек, сам всё увидишь. Желательно также позапускать на устройствах под разными осями. И да, мак с XCode, как и аккаунт Apple-разработчика, всё равно понадобится.

Ответы>>853825>>853833

10 Окт, 10:42 #272 #853825

>>853811
Насколько я знаю, там есть 2 метода разработки:
Xamarin Forms, где интерфейс ресуется через Xaml, и делается билд под все оси сразу.
Xamarin for android/ios, где разрабатываешь так же, как и под соответствующую ось (фреймворк и гуй), просто юзаешь шарпик, вместо жабы или objective/c.

Собственно, если буду что-то пилить, то наверна буду осваивать второй метод, т.к. в первом слишком много всего обобщено, что выльется в пиздец при каштомизации.

10 Окт, 10:46 #273 #853828

>>853808
Если для себя - то вообще похуй, хоть на хаскеле, но работку по замарину хуй найдешь.
Да я тебе советую все таки яву, язык за часа 2 осилишь, только первый месяц блевать будешь от осознания того, что вернулся в шарп года 2003.

Ответы>>853831>>853833

10 Окт, 10:48 #274 #853831

>>853828
Да на язык мне похуй тащемта. Все дело в местных фреймворках, которые описаны в шапке.

10 Окт, 10:55 #275 #853833

>>853808
Xamarin.Form для кросплатформы
Xamarin.Native если только Android

>>853811
>выглядят, как хуй, а внутри них вечно что-то отваливается
Хуйня, все выглядит нативно, все баги пофикшеы годы назад.
XCode - нужен только если будешь под iOS кодить.
Платный Apple-акк не нужен для тестирования на девайсах, а только если хочешь поделится бинарником с друзьями.

>>853828
>но работку по замарину хуй найдешь.
Нормально с работой (если живешь не в зажопинске)
>Да я тебе советую все таки яву
Если знаешь C# -> бери Kotlin, это почти как шарп, но компилируется в java-байткод.

Ответы>>853920>>853994

10 Окт, 12:32 #276 #853867

Как на НЕ рутованном смартфоне имитировать убийство сервиса системой и перезапуск?
Помню был какой-то способ...

Ответы>>853878>>853879>>853888

10 Окт, 12:58 #277 #853878

>>853867
Через adb shell.
http://stackoverflow.com/questions/7415997/how-to-start-and-stop-android-service-from-a-adb-shell

Ответы>>853885>>853887

10 Окт, 12:59 #278 #853879

>>853867
Напиши сам, тыжпрограммист.

10 Окт, 13:09 #279 #853885

>>853878
Нужен root

Ответы>>853887

10 Окт, 13:11 #280 #853887

>>853885
>>853878
root не нужен, тут рестарт не имитируется, а только стоп.

10 Окт, 13:11 #281 #853888

>>853867
В настройках открой список работающих приложений, найди своё, останови сервис.

Ответы>>853897

10 Окт, 13:17 #282 #853897

>>853888
В списке работающих приложений сервиса нет.

Ответы>>853906

10 Окт, 13:28 #283 #853906

>>853897
Значит, он просто забинден. Если сервис был запущен биндингом, а не через startService — сервис не считается запущенным.

10 Окт, 13:46 #284 #853914

У меня есть 3 Observable:
1) Чтение данных с базы
2) Загрузка данных через api
3) Флаг для загрузки данных через api (если true то данные грузятся с api)

Как мне сделать так что бы если флаг был true, то данные грузились с сети, а при ошибке и флаг == false с бд.

Ответы>>853921>>853925

10 Окт, 14:11 #285 #853920

>>853833
Ой, не пизди.

10 Окт, 14:14 #286 #853921

>>853914
Через флаг решать, откуда грузить данные - плохая идея.

А вообще

flag
.flatMap(aBoolean? networkObs : dbObs);

Ответы>>853923

10 Окт, 14:15 #287 #853923

>>853921
Такое тз, что поделать.

реально чекбокс в настройках

Ответы>>853931

10 Окт, 14:16 #288 #853925

>>853914
return flagRx.flatMap {
if (!it) dbRx else netRx.onErrorResumeNext { dbRx }
}

Что-то мне кажется ты хрень делаешь.

Ответы>>853926

10 Окт, 14:28 #289 #853926

>>853925
Да говорю же в тз так. Вот прям цитата:
Добавить в настройках чекбокс "Хранить настройки на сервере"
При снятом чекбоксе хранить локально

Ответы>>853927

10 Окт, 14:40 #290 #853927

>>853926
A RX использовать тоже написано в ТЗ?
И биз. логика должна обязательно через RX идти?

Ответы>>853928

10 Окт, 14:43 #291 #853928

>>853927
Нет, а в чем проблема?

Ответы>>853941

10 Окт, 14:56 #292 #853931

>>853923
Я бы в любом случае локально писал, а словив обновление в базе, если флаг стоит то отправлял на сервак.

10 Окт, 15:10 #293 #853941

>>853928
>Нет, а в чем проблема?
Ты все переусложняешь и зацикливаешся на молотке (RX) когда надо "закрутить шуруп".

Ответы>>853943

10 Окт, 15:12 #294 #853943

>>853941
Если у него реактивные шурупы, то и закручивать их нужно рективным шуруповертом.

Ответы>>853950

10 Окт, 15:23 #295 #853950

>>853943
У него бизнес-логика и представление в кашу смешано.

Ответы>>853951

10 Окт, 15:25 #296 #853951

>>853950
Я позже код вкину, благо это не секрет.

10 Окт, 17:17 #297 #853994

>>853833
> Xamarin.Native если только Android
Если только Android, то Xamarin нахуй не нужен.

> Хуйня, все выглядит нативно, все баги пофикшеы годы назад.
Ага, очень нативно, особенно учитывая, что традиции и гаедлайны UI везде разные. Получается что-то вроде приложения бургер кинга: пользоваться и продавать приложение можно, но если это приложение бургер кинга.

> Платный Apple-акк не нужен для тестирования на девайсах, а только если хочешь поделится бинарником с друзьями.
Окей, не нужен. Но XCode для этого нужен всё равно, а бесплатного не получится протестировать уведомления и не только.

> Если знаешь C# -> бери Kotlin, это почти как шарп, но компилируется в java-байткод.
А вот тут поддвачну. На котлине получишь нативную разработку в очень хорошей среде (Android Studio) и современный синтаксис, а не джаву.

Ответы>>854008

10 Окт, 17:41 #298 #854008

>>853994
Вот этот прав по всем пунктам, кроме последнего.

Если ты только вкатываешься в андроид-дев, то котлин тебе нахуй не нужен. Модный, стильный, молодежный синтаксис будет лишь способствовать образованию говна, вместо архитектуры. Котлин — хороший язык, но лишь в руках опытных разработчиков, знающих костыли android sdk, умеющих в архитектуру и тестирование.

Ответы>>854054>>854065

10 Окт, 18:08 #299 #854021

Мне тут коллега сказал, что AsyncTask устарел и его нельзя использовать, но не смог пояснить почему.
Так в чем же недостатки AsyncTask?

Ответы>>854028>>854093>>854122

10 Окт, 18:22 #300 #854028

>>854021
Говяность кода прямопропорциональна количеству асинктасков в нём, такие дела.

Ответы>>854069

10 Окт, 19:00 #301 #854048

Ананасы, есть LinearLayout в нем три FrameLayout в которых лежат фрагменты. Как сделать чтобы FrameLayout занимали одинаковое место на экране по ширине? layout_weight вообще ему допизды, растягивает средний фрагмент почти до краёв.

Ответы>>854093>>854096>>854140

10 Окт, 19:04 #302 #854054

>>854008
А еще байтоёбство в Котлине просто ад. В жабе еще терпимо, но котлиновские массивы + дрочево байтов = хуй пойми что, дропнул Котлин из-за этого.

Ответы>>854066

10 Окт, 19:13 #303 #854065

>>854008
Хуёв с Android SDK анон и так насосётся, не думаю, что котлин сильно усложнит вкатывание или разбалует его. Наоборот, говнокода меньше будет (потому что вообще кода меньше будет).

10 Окт, 19:13 #304 #854066

>>854054
Можешь привести пример?

10 Окт, 19:15 #305 #854069

>>854028
>Выносим асинктаски в модеь
>Дергаем методы презентора
>Всё пучком

Ответы>>854091>>854102

10 Окт, 19:56 #306 #854091

>>854069
Ебнутый? Ты вообще понимаешь, что такое модель?

Ответы>>854092>>854109

10 Окт, 19:57 #307 #854092

>>854091
Уроки сделал, маня?

Ответы>>854097>>854109

437 Кб, 2728x1418

10 Окт, 19:58 #308 #854093

>>854048
>layout_weight вообще ему допизды
Что-то ты не правильно делаешь значит.
>>854021
Ебешься с колбеками, а еще не забудь все эти колбеки отменить. Неудобный апи вообщем.

Ответы>>854106>>854111

10 Окт, 19:58 #309 #854096

>>854048
Percent support library

10 Окт, 19:59 #310 #854097

>>854092
Что и требовалось доказать.

10 Окт, 20:04 #311 #854102

>>854069
> 2016
> Засорять бизнес логику классами из Android API
Бери compat CompletableFuture и погрузись в мир трансформации кода с Kotlin-async/await

Ответы>>854125>>854127>>854148>>854182

10 Окт, 20:07 #312 #854106

>>854093
> Что-то ты не правильно делаешь значит.
> 0dp
Не знал, что так надо. Думал он при layout_weight игнорирует ширину, а на деле рандомная хуйня получается после запуска, хоть и в студии все ровно.

Ответы>>854110>>854143>>854334

10 Окт, 20:11 #313 #854109

>>854091
>>854092
Источник данных.
Запросил у модели свежий пак фуррятинки - она тебе его вернула.

10 Окт, 20:12 #314 #854110

>>854106
Студия это вроде подсвечивает.

Ответы>>854117

10 Окт, 20:13 #315 #854111

>>854093
>не забудь все эти колбеки отменить
Это когда у нас юзер закрыл приложение, а AsyncTask там еще что-то вычисляет, а потом закончило вычислять и ОПА! NULL POINTER EXCEPTION или что?

Ответы>>854114

10 Окт, 20:17 #316 #854114

>>854111
Хранит неявную ссылку на активити. Неудобное АПИ из трех методов. Сложное управление потоками.

Ответы>>854118

4 Кб, 352x38

10 Окт, 20:18 #317 #854117

>>854110
Нет. И самое главное layout_weight работает, студия молчит и показывает в визуальном редакторе ширину как надо, а после запуска на устройстве пидорасит как захочет.

10 Окт, 20:18 #318 #854118

>>854114
Где там неявная ссылка?

Ответы>>854121

10 Окт, 20:22 #319 #854121

>>854118
Ты когда делаешь анонимный класс, хранишь неявную ссылку на объект в котором создаешь объект анонимного класса.

10 Окт, 20:24 #320 #854122

>>854021
http://blog.danlew.net/2014/06/21/the-hidden-pitfalls-of-asynctask/

10 Окт, 20:48 #321 #854125

>>854102
Иди нахуй со своим котилином.

Ответы>>855714

10 Окт, 20:49 #322 #854127

>>854102
Как ты свою async await лапшу тестировать будешь?

Ответы>>854133

10 Окт, 21:00 #323 #854133

>>854127
Так же как и на C# async/await тестирую.

А в чем конкретно проблемы?

Ответы>>854179

10 Окт, 21:08 #324 #854140

>>854048
> layout_weight вообще ему допизды
layout_width в 0 поставь

10 Окт, 21:10 #325 #854143

>>854106
> Не знал, что так надо. Думал он при layout_weight игнорирует ширину
Нет. Причём я так и не нашёл документации по значению этого поля при установленном layout _weight, а оно таки что-то меняет.

10 Окт, 21:12 #326 #854148

>>854102
Ну вот нахуя тебе этот асинк авейт? Ну как ты ему будешь назначать тред на котором работать, лично мне эта штука кажется менее читабельной чем то что есть сейчас или лямбда.

Ответы>>854181>>854182

36 Кб, 799x600

10 Окт, 21:22 #327 #854162

Какого хуя это гуглоговно пиздит? Все есть и прекрасно пашет. Как наебать эту индусоподелку для быдла? Запускать дизассемблер, искать место проверки и патчить? Есть еще варианты? В принципе не проблема и телефон подключить, но какого хуя.

Ответы>>854167>>854169

10 Окт, 21:26 #328 #854167

>>854162
Проц в студию!

10 Окт, 21:28 #329 #854169

>>854162
Установи HAXM стэндолоном, если оно говорит что нет, значит нет. Возможно ты запретил в биосе.

10 Окт, 21:56 #330 #854179

>>854133
> Так же как и на C# async/await тестирую.
То есть, никак?

Ответы>>854182>>854257

10 Окт, 22:00 #331 #854181

>>854148
Ну просто КОТЛИН удобный он позволнте ьисать меньше кода и он ккрасвый очень нравится почти нкак сишарп, а джава уродливая старая, так что ты неправ.

Ответы>>854193

10 Окт, 22:02 #332 #854182

>>854179
>>854148
>>854102
Расскажите вкратце, что это за CompletableFuture и зачем?

Ответы>>854192>>854193>>854242

10 Окт, 22:13 #333 #854192

>>854182
Observable для бедных. Не нужен.

10 Окт, 22:13 #334 #854193

>>854182
Что бы удобно работать с асинхронными задачами. https://dzone.com/articles/java-8-completablefuture
>>854181
Я не против котлина, мне он даже нравится, но асинк/авейт малополезная на мой взгляд штука, которая только мешает.

Ответы>>854197

10 Окт, 22:19 #335 #854197

>>854193
> Что бы удобно работать с асинхронными задачами
Ну говорю же, Observable для бедных.

Про асинк/авейт согласен. Способствует образованию говнокода, сложно тестировать и дебажить.

Ответы>>854200>>854243

10 Окт, 22:21 #336 #854200

>>854197
>Ну говорю же, Observable для бедных.
Зато изкаробки.

Ответы>>854209

10 Окт, 22:31 #337 #854209

>>854200
На андроиде-то? Нихуя. Даже в Retrolambda нет ни CompletableFuture, ни Streams.

Вообще, изкаробки — это слабый аргумент. AsyncTask, Handler и HttpURLConnection тоже из коробки. Предлагаешь использовать?

Ответы>>854212>>854222

10 Окт, 22:34 #338 #854212

>>854209
> Вообще, изкаробки — это слабый аргумент. AsyncTask, Handler и HttpURLConnection тоже из коробки. Предлагаешь использовать?
А в чём проблема с ними? Особенно с Handler.

Ответы>>854214

10 Окт, 22:39 #339 #854214

>>854212
Ну напиши мне код, который в ui-потоке будет следить за изменениями EditText'а, не чаще чем раз в 0.5 сек делать в фоновом потоке запрос на сервер, а потом показывать результаты в списке (снова ui-тред). Используй только перечисление классы. Не забудь про то, что нужно пережить пересоздание активити.

Как будешь готов, я покажу тебе свой вариант на Rx, сравним код и обсудим, в чем же проблема.

Ответы>>854215>>854220

10 Окт, 22:40 #340 #854215

>>854214
+ забыл упомянуть обкатку ошибок и показ индикатора загрузки.

10 Окт, 22:43 #341 #854220

>>854214
Тратить время на написание кода я не стану, учись нормально изъясняться. К тому же не вижу ничего сложного а твоей задаче, легко решается этим набором классов.

Ответы>>854221

10 Окт, 22:46 #342 #854221

>>854220
Ты реально тупой или троллишь так?

Ответы>>854223>>854230

10 Окт, 22:46 #343 #854222

>>854209
>На андроиде-то? Нихуя.
Я говорил не конкретно про ведро. Хотя есть всякие гуавы. И да, для своего времени вышеупомянутые классы были конфеткой.

Ответы>>854226

10 Окт, 22:47 #344 #854223

>>854221
Круто ты диалог ведёшь.

Ответы>>854226

10 Окт, 22:49 #345 #854226

>>854222
Про не конкретно ведро иди в java-тред.
Конфеткой они никогда не были, но раньше альтернатив особо не было. Теперь есть, и много, так зачем продолжать грызть кактус?

>>854223
Слив засчитан.

Ответы>>854230

10 Окт, 22:52 #346 #854230

>>854226
> Слив засчитан.
Ты знаешь, когда эта фраза употребляется вообще? Я ей же тебе могу на >>854221 ответить, где ты с темы на личности перешёл. И ещё хватает наглости меня при этом тупым называть, поразительно.

Ответы>>854232

10 Окт, 22:58 #347 #854232

>>854230
У тебя очень смешно горит жопа. Люблю такое.

Ответы>>854234

10 Окт, 22:59 #348 #854234

>>854232
На сосач, быдло.

Ответы>>854240

10 Окт, 23:04 #349 #854240

>>854234
В js-тред, макака.

Ответы>>854250

1531 Кб, 500x300

10 Окт, 23:05 #350 #854242

>>854182
>Расскажите вкратце, что это за CompletableFuture и зачем?
Вот это жесть, бедные вы мои android разработчики,
больно смотреть как вас стороной обошли JAVA 7 и 8

И плаваете вы постоянно в 2006 году и Android костылях.
И главное вас даже лечится не хотите и вас все устраивает.

10 Окт, 23:06 #351 #854243

>>854197
Расскажи где ты его хоть использовал и какой у тебя опыт (или ты теоретик)

10 Окт, 23:20 #352 #854250

>>854240
> подразумевая, что андроид разработка — не макакинг

Ответы>>854255

10 Окт, 23:23 #353 #854255

>>854250
> подразумевая, что под андроид пишут только REST-порашу

Ответы>>854260

191 Кб, 716x1024

10 Окт, 23:23 #354 #854257

>>854179
>То есть, никак?
Конкретно в Kotlin async/await метод обычно возвращает CompletableFuture,
у которого можно всегда вызвать join() или get() для получения результата.

===================================================================
===================================================================

RX сам по себе полезен (не зря его добавили в Java 9)
и его можно и нужно применять для "рекативных потоков данных".

Вот только RX хреново ложится на НЕлинейные потоки управления (if-else, for).
В таких случаях как раз для простоты больше подходят async/await,
тк они позволяют писать простой императивный код, как будто без асинхронности.

Не нужно зацикливаться на одном подходе, их нужно комбинировать,
для получения простого и поддерживаемого кода.

===================================================================
===================================================================

У меня кстати есть теория насчет RX + Android UI, может я как нибудь потом ее расскажу.

10 Окт, 23:26 #355 #854260

>>854255
Так ты предлагаешь рест парашу писать в качестве примера, лол.
Впрочем, рест параша — 99% рынка андроид приложений, игры не в счёт. Так-то и на жс можно не рест парашу писать.

Ответы>>854262

10 Окт, 23:27 #356 #854262

>>854260
> ты предлагаешь
Я мимокрок, я ничего тебе не предлагаю

> на жс можно не рест парашу писать
Здесь уже была паста, про будущее, где Линукс переписан на жс, но мне лень её искать.

11 Окт, 01:50 #357 #854334

>>854106
Наверни ConstraintLayout

Ответы>>854339

11 Окт, 02:08 #358 #854339

>>854334
Говна наверни, оно даже не бета.

11 Окт, 02:46 #359 #854347

>>850667
Какого хуя этот даун ещё не забанен?

11 Окт, 10:01 #360 #854402

Подскажите, есть ли возможность сменить лого приложения в гугл плей, не перезагружая apk?

Ответы>>854428

11 Окт, 10:03 #361 #854404

Сап двощ, подскажи что можно выбрать в качестве темы магистерской диссертации? Хочу написать какую-нибудь апликуху, но не знаю какую именно

Ответы>>854428

414 Кб, 1801x1000

11 Окт, 10:21 #362 #854413

Есть ли в android стандартные средства для создания интерфейсов, которые масштабируются под размер экрана?
Пример на пикреле.

Ответы>>854428

118 Кб, 430x539

11 Окт, 10:48 #363 #854428

>>854402
нет

>>854404
>выбрать в качестве темы магистерской диссертации
Ты тредом ошибся, тебе сюда >>827944 (OP)

>>854413
Ну так используй еболу с картинки https://github.com/intuit/sdp
или PercentRelativeLayout из support

еще в манифесте можно поиграть с <supports-screens>
раньше можно было как-то настроить что бы на планшетах растягивался

А вообще - ты хуйню сделать хочешь

Ответы>>854448

11 Окт, 11:20 #364 #854448

>>854428
>А вообще - ты хуйню сделать хочешь
Ох уж этот двач. Наберешься опыта - поймешь.

11 Окт, 11:49 #365 #854462

Как вы храните константы, которые должны быть уникальными в рамках проекта, но не дожны никак меняться от конфига системы (пример - айдишники лоадеров для одного активити, всякие ключи для bundle и т.д.) - тоже в XML, или в коде?

Ответы>>854480>>854484

11 Окт, 12:02 #366 #854479

Сап, котаны, тут такая тема - если мне заплатили аванс и я сделал почти что все, но из-за затупки чувака на бэкэнде мне уже тошно становится работать, то я с юридической точки буду прав, если съебу извинившись перед заказчиком и описав ситуацию, мол работать больше с такими пидорками не могу, но тип за проделанную работу аванс мне остается ? Или таки могут засудить ?

Ответы>>854493

11 Окт, 12:03 #367 #854480

>>854462
когда как, если то какие-то ключи api, то в ресурсах, если же ключи бандлов, преференсов и пр, то в констант-классах

11 Окт, 12:07 #368 #854484

>>854462
Можно в ресурсах как id, если их не много, то можешь в BuildConfig. А вообще можно и просто в файлике Constants.java, хотя это грязновато.

11 Окт, 12:07 #369 #854485

Аноны делаю запрос c помощью rx, он может делаться долго, если в это время перейду на другой экран и начну другой запрос, то он будет ждать пока тот завершиться и только потом начнет выполняться. Делаю все в Schedulers.io, как исправить?

Ответы>>854495>>854561

11 Окт, 12:10 #370 #854493

>>854479
В смысле тошно? Ты получил половину в авансе или сколько? Если ты проделал больше половины работы то и требуй столько сколкьо сделал. Вообще лучше сначала поговорить и описать ситуацию, бекендшик тупит что ли и от этого сроки тянуться, сади их на счетчик лол, или ты не по часам? Просто помахать ручкой будет не очень, но если там мудаки то тогда это вариант.

Ответы>>854560

11 Окт, 12:11 #371 #854495

>>854485
Делать на другом шедулере. А возможно втою долгую задачу стоит делать на отдельном треде/экзекюторе.

Ответы>>854505

11 Окт, 12:22 #372 #854505

>>854495
Да это не долгие задачи, обычные запросы, просто иногда они выполняется секунд 10

11 Окт, 13:20 #373 #854552

Немного бугурта с заказчиков:
"Нужно сделать vo-ip шлюз, похуй что завязано на железо и будет работать на 3-х рутованных смартфонах. Сроки 18 дней, 30 000 р. Нет, смартфон-нейм доя тестировпния не дадим."

Ответы>>854712

11 Окт, 13:27 #374 #854556

>854552
>30 000 р
Зачем фрилансить в фантиках? Как тебя ещё не попросили сделать ИНТЕРНЕТ-МАГАЗИН С ЭТИМ ШЛЮЗОМ ЗА 5 КИЛОРУБЛЕЙ

Ответы>>854572

11 Окт, 13:29 #375 #854558

>>852673

11 Окт, 13:33 #376 #854560

>>854493
>Делаю все в Schedulers.io
>он будет ждать пока тот завершиться
Ты что-то неправильно делаешь Schedulers.io() мультипоточный

Какая версия RX?

Ответы>>854561>>854674

11 Окт, 13:34 #377 #854561

Это >>854560 сюда >>854485

11 Окт, 13:44 #378 #854572

>>854556
Один раз засветил почту - и понеслась.

Ответы>>854629

11 Окт, 15:02 #379 #854629

>>854572
Приямо на почту шлют заказы? Сколько лет опыта? Много приложентй в сторе?

Ответы>>854664>>854665

11 Окт, 15:56 #380 #854664

>>854629
Такую хуйню шлют всем, кто засветит почту на тематическом форуме.

11 Окт, 15:56 #381 #854665

>>854629
Год опыта и два приложения.

11 Окт, 16:09 #382 #854674

>>854560
1.1.6

11 Окт, 16:57 #383 #854690

Анончики, а как в выполнить два запроса на сервер параллельно, используя Retrofit и RxJava?

Ответы>>854693>>854694

11 Окт, 17:00 #384 #854693

>>854690
merge

Ответы>>854746

11 Окт, 17:02 #385 #854694

>>854690
А мог бы не ебать себе голову и запустить 2 асинктаска на многопоточном пуле.

Ответы>>854705>>854758>>854869

11 Окт, 17:12 #386 #854704

Мейлачеры, есть один ListView, у элементы которого включают в себя несколько чекбоксов. При нажатии на любой из этих чекбоксов нужно делать запрос к бд, изменяя состояние соответсвующего чекбокса для соответствующей записи. Думаю запилить Executor, но создавать новый тред на каждый клик по чекбоксу как-то не хочется, ибо клики могут происходить очень часто. Можно ли как-то создать один общий тред по работе с бд и докидывать в него запросы, которые он будет один за другим выполнять?

Ответы>>854707>>854709

11 Окт, 17:13 #387 #854705

>>854694
Смешно.

11 Окт, 17:13 #388 #854707

>>854704
RxJava -> Shedulers.io

Ответы>>854719

11 Окт, 17:14 #389 #854709

>>854704
> один общий тред по работе с бд и докидывать в него запросы, которые он будет один за другим выполнять
А что будет, если один из запросов не выполнится? Рассинхрон?

Ответы>>854713

11 Окт, 17:17 #390 #854712

>>854552
Может нахуй их? Сомнительно что ты упсеешь.

11 Окт, 17:17 #391 #854713

>>854709
Да, будет рассинхрон. Еще можно в onDestroy проводить запись в бд, но мне кажется что тут тоже есть подводные камни

11 Окт, 17:27 #392 #854719

>>854707
ИО – тредпул, который никак не ограничен и создаст тебе поток на каждый параллельный вызов. Я проебался один раз и разогнал его до 300 потоков.

Ответы>>854791

11 Окт, 17:58 #393 #854746

>>854693
merge не подходит, так как требует, чтобы данные в Observable были одного типа.

Ответы>>854761

11 Окт, 18:18 #394 #854758

>>854694
Согласен.

11 Окт, 18:26 #395 #854761

>>854746
zip

11 Окт, 19:08 #396 #854791

>>854719
А есть вообще ограниченный тредпул в Rx, где в случае его заполнения входные потоки будут ждать? Допустим, у меня хуйня подгружается во вьюхолдеры при их появлении, а ресайклервью хуярит по 30 элементов списка.

Ответы>>854797>>854848

11 Окт, 19:19 #397 #854797

>>854791
Schedulers.from(Executors.newFixedThreadPool (...))

11 Окт, 19:39 #398 #854824

Хочу вкатиться к вам, но мак не видит мой телефон и андроид студио не дает запустить тестовое приложение. Чо делать?

Ответы>>854866>>855003

11 Окт, 19:58 #399 #854842

Поясните: если у меня на событие вью не должно идти никаких запросов к серверу, и все действия только внутри вьюхи (пример - нажатие на закрытие диалога) - нужно вызывать презентер?

11 Окт, 20:10 #400 #854848

>>854791
computation ограничен 4 потоками.

11 Окт, 20:25 #401 #854866

>>854824
https://developer.android.com/studio/run/win-usb.html

Ответы>>854881>>855705

11 Окт, 20:26 #402 #854869

>>854694
Но ведь если всё правильно делать, то в асинктаске даже память не утекает и вообще.
Так что вполне себе вариант.

323 Кб, 320x222

11 Окт, 20:41 #403 #854881

>>854866
>мак
>win-usb.html

Ответы>>854884

11 Окт, 20:47 #404 #854884

>>854881
Про макось там тоже есть пара слов.

11 Окт, 21:44 #405 #854923

С новым обновлением начала вываливаться ошибка при сборке:

Error:Error converting bytecode to dex:
Cause: Dex cannot parse version 52 byte code.
This is caused by library dependencies that have been compiled using Java 8 or above.
If you are using the 'java' gradle plugin in a library submodule add
targetCompatibility = '1.7'
sourceCompatibility = '1.7'
to that submodule's build.gradle file.
Error:1 error; aborting
Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: java.lang.RuntimeException: java.lang.RuntimeException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: Return code 1 for dex process

Ответы>>854966

11 Окт, 22:41 #406 #854966

>>854923
Разобрался.

155 Кб, 1280x853

11 Окт, 23:22 #407 #854997

Как в 2016-м лучше всего реализовать аутентификацию по OAuth? Вручную с помощью Retrofit и RxJava? Использовать какую-то стороннюю библиотеку?

Ответы>>855181>>855454

11 Окт, 23:37 #408 #855003

>>854824
adb-то работает?

Ответы>>855705>>855728

12 Окт, 11:07 #409 #855181

>>854997
>Как в 2016-м лучше всего реализовать аутентификацию по OAuth

Kotlin + NIO.2 + java.util.concurrent.Flow.Subscriber

mimo Jake Warton

Ответы>>855187>>855290>>855468>>855734

12 Окт, 11:19 #410 #855187

>>855181
Но он уже активно обмазывается rxjava 2.0, а не твоей жава9парашей.

12 Окт, 15:03 #411 #855290

>>855181

А кто-нибудь не из клоунов мне ответит?

Ответы>>855313>>855714

sage 12 Окт, 15:46 #412 #855313

>>855290
Так же как и в 2015 хватит справшивать хуйню

Ответы>>855332

12 Окт, 16:08 #413 #855332

>>855313
Спросил тебе за щеку. Проверяй.

12 Окт, 19:39 #414 #855454

>>854997
Просто берешь и без задней мысли реализовываешь

12 Окт, 19:48 #415 #855460

Анон, как сделать лист активити, который будет отображать N айтемов и когда пользователь доскроливает до последнего - загружаются еще N айтемов?

Ответы>>855467

12 Окт, 20:02 #416 #855467

>>855460
RecyclerView + custom OnScrollListener

12 Окт, 20:02 #417 #855468

>>855181
Признай, ты просто всрат и тебе не дают тян - поэтому пишешь на котлине

Ответы>>855479>>855616>>855714

12 Окт, 20:15 #418 #855479

>>855468
Признал тебе за щеку. Проверяй.

12 Окт, 20:43 #419 #855496

Когда изменения в SQLite базе записываются на диск при выполнении insert?

Ответы>>855503

12 Окт, 20:50 #420 #855503

>>855496
Перед завершением транзакции.

12 Окт, 21:53 #421 #855539

Анон, как можно посмотреть запрос, который я посылаю? Использую ретрофит и не могу найти ошибку, "if (response.isSuccessful())" получается false все время.

нуфаг

Ответы>>855560>>855566

12 Окт, 22:15 #422 #855560

>>855539
https://github.com/square/okhttp/tree/master/okhttp-logging-interceptor

12 Окт, 22:21 #423 #855566

>>855539
При создании укажи кастомный OkHttpClient, которому при создании прицепил HttpLoggingInterceptor с нужным тебе уровнем логов.
http://stackoverflow.com/questions/32514410/logging-with-retrofit-2

Ответы>>855568

12 Окт, 22:22 #424 #855568

>>855566
О, спасибо

96 Кб, 1080x1920

12 Окт, 22:23 #425 #855570

Мне тут LeakCanary говорит, что память утекает.
Но на MainActivity нету ListView.
Что это за нахрен такой?

Ответы>>855579>>855854

12 Окт, 22:29 #426 #855579

>>855570
Делай дамп памяти, ищи хули. там не было случайно попапов со списками?

Ответы>>855581>>855854

12 Окт, 22:37 #427 #855581

>>855579
Там только ViewPager в котором есть фрагмент со spinner'ом.

Ответы>>855586>>855854

12 Окт, 22:46 #428 #855586

>>855581
Я не уверен, но вдруг в спиннере листвьюха?

Ответы>>855854

16 Кб, 384x467

ведроид тупой слемер 12 Окт, 22:50 #429 #855591

Сап двач
Случилась беда. Телефон пошёл по пизде и я хочу перенести все на пеку, но для это нужно разблокировать экран. Этого я сделать не могу, ибо он в говно.
Что делать? Как обойти блокировку ведра и сохранить данные?

Ответы>>855648

12 Окт, 23:03 #430 #855602

Разобрался с логами, спасибо анон, полезная фича. Но не понимаю проблему, вот такой запрос я отправляю:

https://eu.api.battle.net/sc2/profile/1308689/2/NukeLar/?locale=en_GB&apikey=9rkptd2y6ywe4xn8j859yxm8arg8cb3m

А вот такой отправляется
https://eu.api.battle.net/sc2/profile/1308689/2/NukeLar/?locale=en_GB&apikey=9rkptd2y6ywe4xn8j859yxm8arg8cb3m

Тоесть вместо "?" отправляется "%3F":
Я так понимаю проблема в кодировке? Как это можно исправить?

Ответы>>855618>>855629

44 Кб, 460x460

12 Окт, 23:13 #431 #855616

>>855468
>ты просто всрат и тебе не дают тян - поэтому пишешь на котлине
Да ты охуел поц, посмотри какой у меня причесон :3

А если серьезно - он сам давно пишет на Котлине.

И в slack #kotlin постоянно тусуется и всем отвечает (мне тоже помог с одним вопросом).

Ответы>>855665

12 Окт, 23:16 #432 #855618

>>855602
Добавлю: если вписать локаль и ключ напрямую то все работает, а если через @query или @path - ошибка с %3f

13 Кб, 300x300

12 Окт, 23:18 #433 #855619

Котаны, где искать интересные проекты на андроид?
К примеру связанные с BLE гаджетами/обработкой изображений и т.д.? На русских фриланс биржах весьма кисло.

Ответы>>855656

12 Окт, 23:27 #434 #855629

>>855602
А apikey так в открытую норм постить?

Ответы>>855637

12 Окт, 23:44 #435 #855637

>>855629
Не знаю, а не стоит? на всякий случай удалил и создал новый

12 Окт, 23:56 #436 #855648

>>855591
Съеби в /mobi/.

13 Окт, 00:03 #437 #855656

>>855619
О, лол, у меня две ровно такие штуки валяются, всё ленюсь сделать их них маячки.

13 Окт, 00:14 #438 #855665

>>855616
> он сам давно пишет на Котлине
Ему можно, он знает, что делает.

А тебе нельзя, ты тупой двачер-котлинодаун.

Ответы>>855671>>855714

13 Окт, 00:14 #439 #855666

Как програмно изменить картинку для ImageView?

Ответы>>855669

13 Окт, 00:18 #440 #855669

>>855666
Glide.with(imageView).load("https://pp.vk.me/c407720/v407720160/7732/WQey8mzdD-Q.jpg");

736 Кб, 300x300

13 Окт, 00:25 #441 #855671

>>855665

13 Окт, 01:43 #442 #855705

Проебался я по делам.
>>855003
Что это? Android file transfer пробовал юзать - ни в какую, ничего не помогает. Ни режим разработчика, ни режим фотоаппарата. Телефон сасунг s7.

>>854866
> If you're developing on Mac OS X or Linux, then you do not need to install a USB driver.

13 Окт, 01:58 #443 #855714

>>855665
>>855468
>>855290
>>854125
Как же у местных манек подгорает с котлина. Шо такое? Досадуете, что нормальные люди пишут на новом языке, где не нужны ваши костыльные извращения на недоджаве?

Ответы>>855720

13 Окт, 02:18 #444 #855720

>>855714
Котлин заебись. Заебали долбоебы вроде тебя, которые при любом удобном случае форсят его, абсолютно не понимая, нужен он тут или нет, игнорируя все другие аспекты и ориентируясь лишь на стильный модный молодёжный синтаксис.

Ответы>>855729

13 Окт, 03:11 #445 #855728

>>855003
Хуйнул этот адб и заработало. Можно, вкратце, что это? А то 3 ночи, уже не могу вдумываться

Ответы>>855730>>855805

13 Окт, 03:13 #446 #855729

>>855720
Ты промахнулся. Я не форсирую котлин, я лишь говорю, что вижу в треде много хейтерства в адрес котлина.
Ясное дело, что не надо к проекту, существующему и большому, прикручивать котлин ради одной плюшки.

Ответы>>855734

13 Окт, 03:18 #447 #855730

>>855728
Advanced Database Boot, без него ты не сможешь в своих приложениях базы данных использовать. Проверь, стоит ли у тебя SQLite и PostgreSQL на маке?

Ответы>>855805

13 Окт, 03:56 #448 #855734

>>855729
> Ты промахнулся. Я не форсирую котлин, я лишь говорю, что вижу в треде много хейтерства в адрес котлина.
В ответ на >>855181 нет хейтерства котлина, исключительно презрение к форсеру.

13 Окт, 11:14 #449 #855805

>>855730
Ты ебанутый?
>>855728
Android debug bridge.

13 Окт, 13:06 #450 #855846

Анон, как к айтемам спинера прикрутить пикчу?

13 Окт, 13:25 #451 #855854

>>855570
>>855579
>>855581
>>855586
Утекает список в android.support.v4.preference.PreferenceFragment

Ответы>>855859

13 Окт, 13:32 #452 #855859

>>855854
Вот хуйня, интересно какого хуя. Фргамент-то отцепливается от активити, а вьюхи от фрагмента, или там какой-то изврат?

Ответы>>855876

119 Кб, 1080x1920

13 Окт, 13:50 #453 #855876

>>855859
Хз что там внутрях. Этот фрагмент из библиотеки: https://github.com/kolavar/android-support-v4-preferencefragment

Сейчас я ради интереса взял вместо него PreferenceFragmentCompat:
https://developer.android.com/reference/android/support/v7/preference/PreferenceFragmentCompat.html

И вот результат. Теперь Recycler течёт.

Ответы>>855878>>855883

13 Окт, 13:54 #454 #855878

>>855876
> Этот фрагмент из библиотеки: https://github.com/kolavar/android-support-v4-preferencefragment
Блядь, зачем тебе эта васяноподелка?

Ответы>>855881

13 Окт, 14:01 #455 #855881

>>855878
Тогда не было PreferenceCompat и он из коробки работал так как мне надо не смотря на утечку памяти.
Как приделать material тему к PreferenceCompat - пока абсолютно не понятно.

13 Окт, 14:03 #456 #855883

>>855876
Найс, лучше накидай свой UI, и забудь об этих префернсах.

Ответы>>855885

13 Окт, 14:06 #457 #855885

>>855883
Опять велосипеды....

Ответы>>855889

13 Окт, 14:14 #458 #855889

>>855885
Если хочешь матириал - делай сам.

13 Окт, 18:41 #459 #856081

Где можно таких красивых андроидов как на пике купить? Няшненько.

13 Окт, 19:08 #460 #856101

Как перестать использовать MVVM

https://habrahabr.ru/company/mobileup/blog/312548/

49 Кб, 1600x820

13 Окт, 22:50 #461 #856206

Возможно ли через firebase сделать следующее и в какую сторону копать?
1) Загрузка файлов на сервер после авторизации через гуглоакк
2) Удаление только своих собственных файлов с сервера

Ответы>>856231

13 Окт, 23:34 #462 #856231

>>856206
Возможно, читай мануалы.

14 Окт, 14:17 #463 #856423

>>846993
>Не люблю F5 кучу раз в цикле жать
1) Ещё один breakpoint после цикла + F9
2) Breakpoint with condition

14 Окт, 14:52 #464 #856438

Я говнокода принес. Что скажете?
https://bitbucket.org/kotarep/magnittest/overview

Ответы>>856452

14 Окт, 15:02 #465 #856452

>>856438
Мы вам перезвони.

Ответы>>856457

14 Окт, 15:09 #466 #856457

>>856452
В чем проблема?

Ответы>>856533

14 Окт, 16:50 #467 #856533

>>856457
Вот нахрен ты все 3 конструктора перегружаешь у кастомной View?

другой анон

Ответы>>856536>>856549

14 Окт, 16:55 #468 #856536

>>856533
Хороший вопрос, поправил.

Ответы>>856539

14 Окт, 16:59 #469 #856539

>>856536
А где ты поправил? И главно как и почему ты вообще решил поменять, а не объяснил зачем ты так сделал?

И главное - какого хрена не GITHUB.com?

Ответы>>856542>>856543>>856550

14 Окт, 17:07 #470 #856542

>>856539
Ну я как то давно увидел в мануале, что переопределяются 3 конструктора.
А эта вьюха тоже из мануала http://ru.stackoverflow.com/questions/422816/Как-залить-фон-button-частично/423285#423285
Короче так вышло. Теперь я подумал что можно оставить конструктор который принимает только context и все будет нормально.

Bitbucket потому что стыдно шарить весь свой код приватные репозитории бесплатно.

Все так?

Ответы>>856558

sage 14 Окт, 17:07 #471 #856543

>>856539
> GITHUB.com?
SJW-параша. Нахуй нахуй нахуй нахуй.

14 Окт, 17:12 #472 #856549

>>856533
Я 4 перегружаю через @TargetApi(21)

Ответы>>856550

14 Окт, 17:13 #473 #856550

>>856549
>>856539
Вы меня запутали, надо перезагружать или нет?

Ответы>>856554

14 Окт, 17:16 #474 #856554

>>856550
перегружать*

14 Окт, 17:20 #475 #856558

>>856542
>Bitbucket
Давно известный факт:
github - для публичного опенсорся (и друзьяшек/лайков репозиториев)
bitbuck - для халавных приватных репозиториев

>что переопределяются 3 конструктора.
Я вот уже много лет в кастомных вью переопределяю только конструктор с 2 параметрами (он вызывается при построение UI из xml)

Зачем нужен констр. с 1 параметом еще понятно,
но где используется с 3-мя (ведь тема передается через ContextWrapper)?

Ответы>>856578

14 Окт, 18:07 #476 #856578

>>856558
А gitlab?

Ответы>>856582>>856596

14 Окт, 18:19 #477 #856582

>>856578
Это CI от github?

Вот когда научится собирать (на их сервере) под iOS, тогда и приходите.

Ответы>>856596

14 Окт, 18:44 #478 #856596

>>856582
Это не CI.

>>856578
А хрен знает, у них на сайте есть "почему мы лучше GitHub", по-моему, там вода. Но ты можешь почитать.
На мой взгляд, не нужен.

мимо

Ответы>>856637

14 Окт, 19:24 #479 #856637

>>856596
>Это не CI.
Он там есть, как часть его.

Да и вообще мог бы подробнее рассказать если разбираешься.

Ответы>>856671>>856745

466 Кб, 568x302

14 Окт, 20:03 #480 #856661

Котаны, я правильно понимаю, что для таких задач Firebase НЕ подходит?
1) Выборка данных через WHERE
2) Выборка по координатам (например люди в радиусе 20 км)
3) Выборка только пары полей объекта?

Ответы>>856672

14 Окт, 20:28 #481 #856671

>>856637
Рассказал тебе за щеку. Проверяй.

Ответы>>856745

14 Окт, 20:28 #482 #856672

>>856661
Не подходит.

51 Кб, 600x421

14 Окт, 21:23 #483 #856698

Пытаюсь вкатиться в MVP. Есть вопрос: как сделать так, чтобы презентер и его фоновые процессы (запросы RxJava) переживали пересоздание активити? Какой способ посоветуете?

Ответы>>856700>>856703>>856710

14 Окт, 21:28 #484 #856700

>>856698
Нинужна.

Ответы>>856701

14 Окт, 21:30 #485 #856701

>>856700
Разверни свою мысль.

14 Окт, 21:33 #486 #856703

>>856698
Ну тут два стула:
1) Заинжектить презентер, делать каждые презентер синглтоном и не убивать, или хранить убивать только когда в нем нет фоновых задач;
2) Не сохранять презентер, но все фоновые задачи держать в синглтоне;

Ответы>>856708>>856719

14 Окт, 21:38 #487 #856708

>>856703
> Заинжектить презентер, делать каждые презентер синглтоном и не убивать
Тогда придется делать методы жизненного цикла в презентере, так? Типа onCreate(), onDestroy(). Или attachView(View view), dettachView(View view). Наверное, это всё усложнит тестирование.

> Не сохранять презентер, но все фоновые задачи держать в синглтоне
А как управлять состоянием тогда? Запрос на сервер, допустим, завершился, а презентера в это время не существует. Мы потерям состояние?

Ответы>>856733>>856740

24 Кб, 250x291

sage 14 Окт, 21:39 #488 #856710

>>856698
Объясняю, сука дауненок.
Делаешь нахуй интерактор
@Singleton
class YobaInteractor {

Observable<Govno> run() {
return mApi.kokoko().cache()
}
}

В презентере инжектишь интерактор и вызываешь его когда хочешь. Все.

Ответы>>856720>>856724>>856737

14 Окт, 21:45 #489 #856719

>>856703
>1) Заинжектить презентер, делать каждые презентер синглтоном и не убивать, или хранить убивать только когда в нем нет фоновых задач;
Говно, если у тебя в стеке вылезет ещё одна такая же активити

Ответы>>856733

14 Окт, 21:47 #490 #856720

>>856710
РЕПОЗИТОРИЙ

@

100 методов вызова апи, каждый возвращает Observable<Yoba>

Ответы>>856728

14 Окт, 21:50 #491 #856724

>>856710
Хуйня.

14 Окт, 21:54 #492 #856728

>>856720
А что не так?

14 Окт, 21:57 #493 #856733

>>856719
Ну я так никогда не делал)))0)
>>856708
Состояние ты определишь по закешированному респонсу или его отсутствию.
А из методов жизни там будет байнд и анбайнд к View, притом не та что ведроидовская, а та что логическая, ВСЕ.

Ответы>>856739

14 Окт, 22:07 #494 #856737

>>856710
А если я уже послал запрос на эту хуйню, и данные еще не протухли, поворот экрана напрмиер?

14 Окт, 22:11 #495 #856739

>>856733
Тогда как-то так получается? http://pastebin.com/wZfVNBEt

А что делать, если view в этот момент null? Везде добавлять проверки if (view != null) ?

Или что не так с моим кодом?

Ответы>>856742>>856754

14 Окт, 22:11 #496 #856740

>>856708
Самое лучшее - не баловаться творением хипстерков, а использовать то, что сказали дяди в гугле - пустой фрагмент с SetRetainInstance(). Один ретейн фрагмент - на одну вьюху.

1) Кэшируешь обсёрвабл перед подпиской
2) Когда презентер у тебя будет сохранять состояние в onSaveInstanceState - отписывайся от обсёрваблов, и хуярь ссылки на на них в отдельный метод вьюхи, который будет сохранять во фрагмент
3) После ретейна вытаскивай эти ссылки, и подписывайся на них.

Чтобы идентифицировать, к каким Observable какой Subscriber подписывать - используй мап с айдишником.

Синглтон не советую - если у тебя юзер просто убьёт активити, синглтон будет висеть с закэшированными Observable.

Ответы>>856743>>856759

14 Окт, 22:15 #497 #856742

>>856739
>Или что не так с моим кодом?
Я не в настроении делать код ревью. Сорян.
Проверки нужно добавлять только там где ты пытаешься что-то во вьюху пихнуть, но вметсо прямой записи, сохраняй данные в презентере и если вьюха не нулевая то пихай в нее, а когда вьюха подцепливается пихай в нее последние данные, если есть.

Ответы>>856754

14 Окт, 22:16 #498 #856743

>>856740
> не баловаться творением хипстерков
Это ты про что?

> пункты 1, 2, 3
> Чтобы идентифицировать, к каким Observable какой Subscriber подписывать - используй мап с айдишником.
Как-то слишком громоздко получчается. Тестировать, наверное, будет сложно..

> если у тебя юзер просто убьёт активити, синглтон будет висеть с закэшированными Observable.
Да, я тоже об этом подумал...

Ответы>>856755

14 Окт, 22:19 #499 #856745

>>856671
Но ведь ты не я.

>>856637
Пускай CI есть как часть. Самое главное, что это не от GitHub, это его конкурент.
Нет, не разбираюсь. Читал про гитлаб какое-то время, пока про него на hacker news писали в начале года, но так и не понял, чем он лучше гитхаба. А потом и забыл про гитлаб совсем.

Ответы>>856747

14 Окт, 22:22 #500 #856747

>>856745
> но так и не понял, чем он лучше гитхаба
Можно на свой сервер поставить. А так, ничем не лучше.

14 Окт, 22:23 #501 #856750

ПЕРЕКАТ https://2ch.hk/pr/res/856749.html (М)

ПЕРЕКАТ https://2ch.hk/pr/res/856749.html (М)

ПЕРЕКАТ https://2ch.hk/pr/res/856749.html (М)

ПЕРЕКАТ https://2ch.hk/pr/res/856749.html (М)

ПЕРЕКАТ https://2ch.hk/pr/res/856749.html (М)

14 Окт, 22:30 #502 #856754

>>856739
>>856742

Ага, в Mosby примерно такой подход и используется.

>Mosby provides MvpBasePresenter, a Presenter implementation which uses WeakReference to hold the reference to the view (which is a Fragment or Activity) to avoid memory leaks. Therefore when your Presenter wants to invoke a method of the view you always have to check if the view is attached to the Presenter by checking isViewAttached() and using getView() to get the reference.
Alternatively, you could use MvpNullObjectBasePresenter class that implements Null Object Pattern for the MvpView. So whenever MvpNullObjectBasePresenter.onDetach() gets called the View will not be set to null (as MvpBasePresenter does. Instead an empty View gets created dynamically by using reflections and gets attached as view to the Presenter. This avoids view != null checks since either the real view is attached or the null object pattern view is attached that simply does nothing on method invocation.

14 Окт, 22:34 #503 #856755

>>856743
>Это ты про что?
Это я про всякие велосипеды с презентерами-синглтонами.

>Как-то слишком громоздко получчается. Тестировать, наверное, будет сложно..
У тебя у презентера по сути добавляются 2 метода:
saveObservablesInYourMom()
restoreObservablesFromYourMom(Map<Integer, Observable>>)
Первый передаёт обсёрваблы в подобный метод у View. Второй вызывается вьюхой при инициализации.

>Да, я тоже об этом подумал...
Вся прелесть ретейн фрагмента в том, что он живёт только если произошёл поворот.

14 Окт, 22:43 #504 #856759

>>856740
>если у тебя юзер просто убьёт активити
Што? Как юзер может убить активити?
он может только убить приложение целиком

Ответы>>856766

14 Окт, 22:51 #505 #856766

>>856759
Совсем даун?

Жму кнопку назад, открывается предыдущая активити, старая убита, но приложение работает

Ответы>>856767

14 Окт, 23:03 #506 #856767

>>856766
Ты че такой не агресивный-неадекват.

Это называется не "пользователь убил", а активити разрушилось.

Ответы>>856768

14 Окт, 23:05 #507 #856768

>>856767
Ога, само взяло и разрушилось. Плак-плак.

16 Окт, 18:00 #508 #857761

Как запилить ебаные локальные юнит тесты?
Сделал все по гайду, от гугла:
1. положил класс с тестами в src/test/java
2. прописал зависимости testCompile.
Нихуя не работает, причем никакие зависимости со скоупом testCompile не подтягиваются вообще.
Либо мб есть способ использовать файл из файловой системы в androidTest?

16 Окт, 22:09 #509 #857926

Пытаюсь для себя разобраться с андройдом и попробовать запилить свой TCP клиент. С джавой знаком слабо, но есть опыт на других языках. Так вот, испытываю проблемы при обмене инфой между потоками. Хотелось бы организовать в потоках события, например произошло соединение, пришли данные и т.п. Если сравнить с Qt то хочется сигналов-слотов, если с Delphi - procedure of object. В Java вместо этого есть паттерн "наблюдатель", но он сцуко не работает из потоков в андройде (возникают эксепшены), либо я не нашел как его грамотно использовать. Практически все примеры с потоками, которые я видел для андройда - без обратной связи (запустил и оно работает пока поток сам не завершиться). Какой все-таки православный метод организации событий?

Ответы>>857932

16 Окт, 22:14 #510 #857932

>>857926
Попробуй какую-нить RxJava

Тред утонул или удален.
Это копия, сохраненная 8 ноября 2016 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

« /pr/В начало тредаВеб-версияНастройки/a//b//mu//s//vg/Все доски

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion