@kotlin_lang

Страница 77 из 982
Руслан
19.03.2017
19:42:06
Так а джус получается ты сам накрутил

Руслан
19.03.2017
19:42:41
Так там вроде нету джуса в зависимостях

Google
Alexey
19.03.2017
19:43:22
Так там вроде нету джуса в зависимостях
https://github.com/rubenlagus/TelegramBots/blob/7d6eab7ce2637c8ff6d27068dfaad587c9a1f351/TelegramBots.wiki/Changelog.md

Use Guice for dependency injection.

Igor
19.03.2017
19:43:37
Бот на андройде крутится? А зачем?)
Что бы перекидывать CMC в телеграм-клиент на моем маке (почему у меня все это спрашивают ?) Все секьюрно - БЕЗ облаков.

Руслан
19.03.2017
19:43:46
А, оно в мете, вижу

Руслан
19.03.2017
19:46:31
Насколько я вижу, если этот код не выполнится, сессия незабиндится https://github.com/rubenlagus/TelegramBots/blob/0c03ab093f8841658141f7cdec48a1bd9c0bf524/telegrambots/src/main/java/org/telegram/telegrambots/ApiContextInitializer.java#L19

Судя повсему ты сам должен этот метод дернуть

Alexey
19.03.2017
19:47:28
секундочку

работает

Sasha
19.03.2017
21:49:34
Это кто нибудь уже пробовал? https://medium.com/@mateusz_bartos/write-ios-apps-in-java-along-with-android-900d6013f83f#.6rpd7lnb6

Sasha
19.03.2017
22:02:21
MOE.

Google
Igor
19.03.2017
22:06:20
MOE.
Пробовал, еще когда он был проектом Intel - не понравилось. - Миллион аннатация на кажый метод/класс - Очень хреново работал с Kotlin (генераторы object-c прослойки не работали), в итоге много когда приходилось писать на Java ? Потом Intel "отдал его в opensource" и он теперь где-то на грани смерти. RoboVM - куда проще юзать и он тоже более-мене поддерживается.

Artem
19.03.2017
22:07:08
Как получить instance класса Application в андроид на котлине? Раньше у меня было так: приватная статическая переменная instance типа App, а в onCreate я делал instance = this. Потом методом instance() получал его. В котлине чет туплю(

Artem
19.03.2017
22:07:51
а как из него обратиться к переменной внешнего класса? Пробовал через компаньон

Igor
19.03.2017
22:08:39
Artem
19.03.2017
22:10:41
хм, спасибо

а как может выглядеть решение без lateinit?

это спрашиваю просто ради интереса, ну и чтобы знать. Почитал, но не очень хорошо понял от чего спасает lateinit

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

Quantum Harmonizer
19.03.2017
22:44:27
Artem
19.03.2017
22:48:17
Кстати, а из-за чего может вылетать при использовании Kotlin Android Extensions. Хотел попробовать фичу с вьюхами, когда в импорт просто пишешь путь на layout, а потом по id обращаешься. сделал btn1.setOnClickListener{...} и при создании экрана — вылет

затупил. Через мою рут вью надо было обращаться

Quantum Harmonizer
20.03.2017
08:10:24
затупил. Через мою рут вью надо было обращаться
После setContentView можно и прямо из активити.

Roman
20.03.2017
09:29:36
Привет! Только начал учить Котлин, делаю по уроку и проблема с импором лэйаута. Делаю импорт: import kotlinx.android.synthetic.main.news_item.view.* Использую в коде description.text = item.title и получаю ошибку reciever type mismatch. item.title - это String в xml description выглядит так: <TextView android:id="@+id/description" В другом классе проблем с импортом нет. В чем может быть проблема?

Roman
20.03.2017
09:45:16
То же самое. Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: public val View.description: TextView! defined in kotlinx.android.synthetic.main.news_item.view

Roman
20.03.2017
09:49:36


Quantum Harmonizer
20.03.2017
09:50:57
То есть по факту синтетические свойства для вьюх не импортировались?

Google
Roman
20.03.2017
09:52:41
Не знаю. Но в тексте ошибки он же видит эту вьюху? public val View.description: TextView! defined in kotlinx.android.synthetic.main.news_item.view

Quantum Harmonizer
20.03.2017
09:53:25
А плагин kotlin extensions включён?

Roman
20.03.2017
09:54:12
Да, потому что в другом классе import kotlinx.android.synthetic.main.news_fragment.* Мне спокойно дает работать с вьюхой

Dmitry
20.03.2017
10:04:02
А у тебя точно *тот* импорт? kotlinx.android.synthetic.main.news_item_loading.view

Pavel Shackih
20.03.2017
10:06:16
а там разве не на itemView надо вызывать экстенжены? itemView.time.text = ...

Roman
20.03.2017
10:15:18
а там разве не на itemView надо вызывать экстенжены? itemView.time.text = ...
Оно! В тексте урока он не описал, а я пропусит этот момент: fun bind(item: RedditNewsItem) = with(itemView) { }

Спасибо большое

Igor
20.03.2017
12:05:22
В Android проектах с kotlin 1.1.1 - теперь не нужно хранить *.kt файлы в /main/kotlin? IDEA CE 2016.3.5 не маркирует каталог /main/kotlin как "source root" И когда я маркирую через IDEA, то при повторном заходе в проект - он сбрасывается.

Dzmitry
20.03.2017
12:07:14
Ты и раньше мог хранить не там, просто рядом с java

ты main.java.srcDirs += 'src/main/kotlin' test.java.srcDirs += 'src/test/kotlin'

делал?

Igor
20.03.2017
12:08:17
Ты и раньше мог хранить не там, просто рядом с java
Но раньше, /kotlin/main нормально определялся без всяких КОСТЫЛЕЙ в build.gradle

Dzmitry
20.03.2017
12:08:45
хз

может сломали

Igor
20.03.2017
12:08:57
делал?
нет и не хочу это делать руками, когда есть плагин (kotlin-android). Опять таки в JavaSE - все работает (плагин kotlin).

Dzmitry
20.03.2017
12:09:36
в плагине видно что-то опять отломалось

>Но раньше, /kotlin/main нормально определялся без всяких КОСТЫЛЕЙ в build.gradle Плагин эту магию просто делал. причем у меня оно у меня и раньше работало через раз.

Artem
20.03.2017
13:08:55
В чём может быть трабл? Проблема: переписал свой базовый адаптер и viewHolder на котлин и в холдере перестал срабатывать абстрактный метод

abstract class BaseAdapter<T : BaseViewHolder> : RecyclerView.Adapter<T>() { lateinit var c: Context var clickListener: IRecyclerViewClickListener? = null lateinit var rv: RecyclerView private var lastPos : Int = -1 override fun onBindViewHolder(holder: T, position: Int) { holder.flush() super.bindViewHolder(holder, position) animate(holder.itemView, position) } private fun animate(root: View, position: Int) { if (position > lastPos) { val a = AnimationUtils.loadAnimation(c, android.R.anim.fade_in) root.startAnimation(a) lastPos = position } } override fun onViewDetachedFromWindow(holder: T) { holder.itemView.clearAnimation() } override fun onAttachedToRecyclerView(recyclerView: RecyclerView?) { super.onAttachedToRecyclerView(recyclerView) this.c = recyclerView!!.context this.rv = recyclerView } fun inflate(@LayoutRes layoutId: Int, parent: ViewGroup? = null) : View { return LayoutInflater.from(c).inflate(layoutId, parent, false) } fun attachItemClickListener(listener: IRecyclerViewClickListener) { this.clickListener = listener } }

Google
Artem
20.03.2017
13:10:29
мб чего не так делаю просто?

Artem
20.03.2017
13:23:03
onCreateViewHolder как и положено. Код холдера кидать?

abstract class BaseViewHolder(itemView: View?) : RecyclerView.ViewHolder(itemView) { private var item: View? = itemView abstract fun flush() fun<V : View> find(@IdRes id: Int) : V { return item!!.findViewById(id) as V } }

Igor
20.03.2017
13:28:10
onCreateViewHolder как и положено. Код холдера кидать?
Лучше кинь код onCreateViewHolder (и можно не в чат)

Андрей
20.03.2017
13:29:06
и можно не в чат - тут, наверное, лучше уточнять куда, на пастебин или в личку.

Admin
ERROR: S client not available

Igor
20.03.2017
13:34:06
Artem
20.03.2017
13:37:04
на будущее понял, спасибо)

Андрей
20.03.2017
13:53:01
на будущее понял, спасибо)
А у тебя во многих классах реализованы такие методы, как в 58-ой строчке http://pastebin.com/PCnV7fzv ? Оно решается таким экстеншеном: inline fun <reified T : View> View.find(@IdRes id: Int) = findViewById(id) as T и юзается как-то так: var title = root.find<TextView>(R.id.title) а если тип переменной изветсен заранее, то даже без генерика: title = root.find(R.id.title)

Artem
20.03.2017
13:54:34
Да это да, знаю. Спасибо. Я хотел сначала адаптер нормально переписать

Andrew
20.03.2017
15:23:55


Sergey
20.03.2017
15:25:36
я в kotlin все пихаю

Quantum Harmonizer
20.03.2017
15:26:00
я не переименовываю, не царское это дело)

Andrew
20.03.2017
15:28:55
я в kotlin все пихаю
ну прост это ж не настоящая папка, при попытке переименовать чёто матерится и в половине мест в итоге java остается в названии

Quantum Harmonizer
20.03.2017
15:29:10
настоящая

Sergey
20.03.2017
15:29:17
настоящая жи

только это не пакет

Andrew
20.03.2017
15:29:46
а все, туплю уже

блин, переименовал и эта папка вообще из представления android пропала

Google
Quantum Harmonizer
20.03.2017
15:40:07
надо её отметить как исходники

Igor
20.03.2017
15:42:37
блин, переименовал и эта папка вообще из представления android пропала
добавь внутрь блока android { в build.gradle sourceSets { main.java.srcDirs += 'src/main/kotlin' test.java.srcDirs += 'src/test/kotlin' }

Andrew
20.03.2017
15:48:04


Igor
20.03.2017
15:52:15
Переименуй папку через любой file-manager (или консоль)

Andrew
20.03.2017
15:52:36
ок, спасибо, попробую

Igor
20.03.2017
15:53:52
ок, спасибо, попробую
И кстати лучше сразу снимать эти галочки (мне они столько раз ломали разные файлы ресурсов ?)

Andrew
20.03.2017
15:56:34
да, мне тоже, тут хеллоуворлд, ресайклер понадрачивать с созданием айтемов без инфлейта

потому можно на галочки не смотреть особо

Roman
21.03.2017
07:32:42
продолжаю осваивать бестпрктис по работе с nullability был такой код на джава: if (userStateInteractor.isUserLoggedIn && locationInteractor != null) { return locationInteractor.onAppStop() } else { return Completable.complete() } стал такой на котлине val locationInteractor = this.locationInteractor if (userStateInteractor.isUserLoggedIn && locationInteractor != null) { return locationInteractor.onAppStop() } else { return Completable.complete() } как-то можно сделать лучше/короче/красивше?

private var locationInteractor: LocationInteractor? = null

так объявлено свойство

Roman
21.03.2017
07:37:53
return вынести ?
хорошо =) вопрос немного не об этом ) это нормально что если есть nullable свойство то код работы с ним всегда получается более многословным чем на джаве?

Igor
21.03.2017
07:41:29
хорошо =) вопрос немного не об этом ) это нормально что если есть nullable свойство то код работы с ним всегда получается более многословным чем на джаве?
Зато он безопаснее, ты по идеи в Java должен вынесли в лок. переменную (а то вдруг ? др поток поменяет поле между проверкой и вызовом метода). Хотя теор., наверное можно было бы ослабить это требование для НЕ volatile свойств.

Roman
21.03.2017
07:44:15
а тут тоже ничего нельзя сделать лучше: было: locationInteractor = FsofApplication.userComponent.locationInteractor return locationInteractor.requestDeviceLocation() стало: val locationInteractor = FsofApplication.userComponent.locationInteractor this.locationInteractor = locationInteractor return locationInteractor.requestDeviceLocation() ?

Михаил
21.03.2017
07:46:53
можно

котлин 1.1?

Страница 77 из 982