@android_ru

Страница 495 из 3205
Constantine
05.11.2016
11:12:27
Вдруг кому сгодится - нарисовал для себя сейчас картинку состояний при инициализации гео-функционала. Лично я без картинки это слабо себе могу запомнить.

https://gist.github.com/cvoronin/eeb61e7f486645f85af11ad62d73df41

OMG, а нафига превьюшка то такая...

Google
Constantine
05.11.2016
11:14:42
ага, но так-то без разницы

Ⓜ️ᵃʳᵃᵗ
05.11.2016
11:15:25
Я вообще локешн сервис написал и таскаю его, общение идет мессейджами

Denis
05.11.2016
11:15:54
ага, но так-то без разницы
И как язык? Юзабельно в проде?

Constantine
05.11.2016
11:16:17
в прод ещё не выкатили, но, имхо, это лучшее, что могло случиться с java

Denis
05.11.2016
11:17:01
В студию тогда

Constantine
05.11.2016
11:17:23
Я вообще локешн сервис написал и таскаю его, общение идет мессейджами
У меня тоже такой есть, но давно написанный, решил что надо бы обновить

Есть причины так думать?)
Не-не, я ж не зря про имхо написал, нас так не возьмёшь. Но писать на нём реально очень приятно.

Ⓜ️ᵃʳᵃᵗ
05.11.2016
11:18:24
Я обновил, в общем гибридный, либо гугл локейшн, либо обычный юзает, если первое не доступно, и включая пермишенсы

Constantine
05.11.2016
11:21:00
Я обновил, в общем гибридный, либо гугл локейшн, либо обычный юзает, если первое не доступно, и включая пермишенсы
Угу, меня просто восхищает то количество граблей, на которые можно наступить, пока до "координаты получены" дойдёшь... В идеальном мире кто-нибудь это на rx сделал бы...

Дмитрий
05.11.2016
11:23:22
ребят, кто котлином пользуется как сделать вот такое: var foo: Bar!!

это я по аналогии с Swift хочу

чтобы везде потом не писать foo!!

Google
Yan
05.11.2016
11:23:53
lateinit var foo: Bar

Дмитрий
05.11.2016
11:24:13
спасибо!

Constantine
05.11.2016
11:25:32
можно ещё так var value by Delegates.notNull<String>()

Дмитрий
05.11.2016
11:57:04
в чём разница?

(что предпочтительнее?)

Constantine
05.11.2016
12:05:33
С практической точки зрения разницы нет, с lateinit оно читается проще

Но тут нужно быть готовым к тому, что нет явного способа проверить - а было ли значение инициализировано? Может понадобиться, например, в onStop чтобы что-то сказать презентеру - а он, как раз, и может быть неинициализированным по какой-то причине

местами с этой целью народ такое решение использует inline fun wasInit(f: () -> Unit): Boolean { try { f() } catch(e: UninitializedPropertyAccessException) { return false } return true }

override fun onPause() { wasInit { presenter.onPause() } super.onPause() }

Дмитрий
05.11.2016
12:42:39
оу, выглядит как костыль

в swift можно проверить var foo: Bar! if (foo != nil) {

перенёс весь проект на котлин, и подумал: а нахрена?

Constantine
05.11.2016
12:50:02
ну там много других вкусностей. в случае котлина проверка на null не канает - мы ведь сразу говорим: это значение никогда не может быть null-ём

это примерно как проверять объект типа Integer на тему, а не стал ли он внезапно String[] :)

Дмитрий
05.11.2016
12:52:15
если говорить в рамках c++, то всё может быть =)

Constantine
05.11.2016
12:53:02
ну ещё из забавностей с value!! можно поймать прикольные случаи, когда значение парсится, например, из JSON при помощи, например GSON. Хоть на уровне объявления переменной сказано - она никогда null не будет, но GSONу оно до лампочки - если null, значит держите null

на этапе десериализации ничего не сломается, но при обращении к значению - ога, можно словить NPE там, где его вроде бы не ждёшь

Дмитрий
05.11.2016
13:08:56
вот ещё вопрос, когда подключил kotlin отвалился butterknife (поля так и остаются null, причём в Java файлах)

Дмитрий
05.11.2016
13:15:27
а что лучше? сейчас подключил extensions, но не очень понял как пользоваться: в on create view надо писать view.id, в других местах id (про фрагменты если говорить) и ещё, я так понял в доках написано что он каждый раз будет findViewById вызывать, что как мне кажется не очень

Google
Дмитрий
05.11.2016
13:16:05
сделал по старинке, сам объявил переменные, в onCreateView ссылки в них положил а вы как делаете?

Denis
05.11.2016
13:16:15
databinding

https://developer.android.com/topic/libraries/data-binding/index.html

Anton
05.11.2016
13:16:34
Батернайф

Denis
05.11.2016
13:16:51
Батернайф
Не нужно

Anton
05.11.2016
13:17:01
:(

Дмитрий
05.11.2016
13:17:36
батеркнайф не работает с котлин (на яве его использую)

databinding
оно разве вышло из беты?

Denis
05.11.2016
13:18:19
оно разве вышло из беты?
вполне юзабельно

Timur
05.11.2016
13:20:59
Denis
05.11.2016
13:22:08
Это ололо конечно, две версии либы пилить.

Constantine
05.11.2016
13:22:35
сделал по старинке, сам объявил переменные, в onCreateView ссылки в них положил а вы как делаете?
дак оно ж вроде "само" работает? предположим, я добавил в лейаут кнопку btnConfirm теперь в любом месте кода я могу написать btnConfirm.onClick { presenter.onConfirmed } IDE удивится увидев btnConfirm и предложит его импортировать из пакета вида kotlinx.android.synthetic.main.

нужно просто согласиться :)

но тут, опять, нужно быть аккуратным в случаях, когда в один лэйаут инклюдятся разные лэйауты - если у них есть элементы с одинаковым id, лучше обращаться к ним явным образом (например, через anko)

Владислав
05.11.2016
15:07:47
Aleksei
05.11.2016
15:42:23
Capt использовать надо

Artem
05.11.2016
15:53:30
что такое capt?

Aleksei
05.11.2016
15:58:22
compile 'com.jakewharton:butterknife:8.0.1'     kapt 'com.jakewharton:butterknife-compiler:8.0.1'

Google
Aleksei
05.11.2016
15:58:37
Kapt ошибся извините

Axrorxo'ja
05.11.2016
15:59:27
Apt добавили?

buildscript { repositories { mavenCentral() } dependencies { classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' } }

apply plugin: 'android-apt' ... dependencies { compile 'com.jakewharton:butterknife:8.4.0' apt 'com.jakewharton:butterknife-compiler:8.4.0' }

Denis
05.11.2016
16:10:41
А можно использовать датабинд и не жрать BK

Aleksei
05.11.2016
16:14:21
Апт для Явы

Gerc
05.11.2016
16:22:14
А можно и не датабиндинг и не кнайфы, а плагином генератора

Admin
ERROR: S client not available

Denis
05.11.2016
16:25:19
Зачем?

Датабинд много в себе полезного несет, чтобы его просто так взять и плагином заменить.

Stas
05.11.2016
16:27:43
Кто-нибудь пользовался LinearSnapHelper ?

Denis
05.11.2016
16:30:45
Много глюков и связаности с хмл
Много глюков? Например?

Много глюков и связаности с хмл
Ну и насчет связности - нефиг писать там километровые выражения и все будет ок

Там даже предупреждают, вроде как, не писать в хмл сложные выражения.

Gerc
05.11.2016
16:33:40
Много глюков? Например?
В едиттексте написал что-то, потом сеттекст сделал и пошла рекурсия обсерверов с стаковерфлов

Gerc
05.11.2016
16:34:31
Да, которого нет

Denis
05.11.2016
16:35:09
Хм, есть пример кода?

Google
Denis
05.11.2016
16:37:24
Что например?
https://developer.android.com/topic/libraries/data-binding/index.html

Просвещайся

Igor
05.11.2016
16:38:20
Просвещайся
...ня это все

Denis
05.11.2016
16:38:27
Ну да, конечно

Стопицот findViewById лучше

Мы у мамы сильные и смелые, все руками писать будем

...ня это все
Такое ощущение, что ты не читал даже)

Gerc
05.11.2016
16:47:10
Мы у мамы сильные и смелые, все руками писать будем
Плагином в два клика все напишет, пока вы настраиваете биндинги и вспоминаете как назвали айди

Denis
05.11.2016
16:48:53
Не думаю, что этот плагин покроет все возможности датабинда

Gerc
05.11.2016
16:49:21
Denis
05.11.2016
16:49:31
И так сделает? android:text="@{String.valueOf(index + 1)}" android:visibility="@{age < 13 ? View.GONE : View.VISIBLE}" android:transitionName='@{"image_" + id}'

И лямбды засунет? и кастомные класы прокинет?

Прям магический плагин

Ещеб он приложуху за меня писал, цены бы ему не было

Gerc
05.11.2016
16:50:25
Это только датабиндинг ваш умеет

А плагин только две легкие вещи. Без глючного биндинга и кода в хмл

Konstantins
05.11.2016
16:51:01
Он типа как в винфоне?

В xaml

Denis
05.11.2016
16:51:15

Страница 495 из 3205