Mike
андроид не мыслит классами, у него есть компоненты приложения, по ним же он определяет, грохабельно ли приложение
Hovhannes
счастливый
ага. жопа в мыле. счастье т какое
Ilya
А как его словить? Я его создал и передал в нотификейшн, но как словить не знаю
Ilya
я тебе целых три варианта предложил
Mike
А как его словить? Я его создал и передал в нотификейшн, но как словить не знаю
ну создай и зарегай броадкастРесивер и сделай пендингИнтент на броадкаст
Mike
я тебе целых три варианта предложил
и отвечай через ответы, чёрт побери, иначе я могу никогда их не увидеть
Ilya
Похоже на костыль
Ilya
Создавать отдельный класс, отдельный компонент просто чтобы переключить флаг
Serjio
Serjio
как вот тут быть?
Mike
вытащить в локальную val, можно let'ом
Serjio
тьфу. там написано. Smart cast to BLEPeripheral is impossible, because mBLEPeripheral is a mutable property that could bave been changed by this time. короче, в классе BLEPeripheral есть init, а он у меня не вызывается
Serjio
ну ест ьстрочка private var mBLEPeripheral: BLEPeripheral? = null по нажатию на кнопку я делаю mBLEPeripheral = BLEPeripheral() и потом mBLEPeripheral?.startAdvertise() но этот advertise не срабатывает, потому что mManager == null, а не null он делается внутри public int init(Context context) { который находится в классе BLEPeripheral
Serjio
по идее этот init должен случаться при (создании объекта?)?
Mike
по идее этот init должен случаться при (создании объекта?)?
нет, не должен. Языковая конструкция пишется как init {}, она не метод и не может принимать параметров, она часть конструктора
Serjio
я пытался прямо перед startAdvertise сделать mBLEPeripheral.init(context) но получил ту ошибку что smart cast is impossible
Serjio
ну а если она не метод - когда она должна срабатывать (и почему у меня не срабатывает?) и стоп, у меня в классе (честно спизженном сниплете у какой-то китаянки) она принимает параметр Context context, если я правильно понимаю
Serjio
то есть это некий метод. значит, надо самому инициализировать?
Mike
ну конечно, а то где компилятор возьмёт контекст?
Serjio
BLEPeripheral().init(context) ?
Serjio
(как его правильно получить только теперь)
Mike
BLEPeripheral().init(context) ?
ну с таким успехом его можно просто в конструктор
Serjio
тогда совсем не догоняю, как правильно.
Anonymous
парни купил ноут для обучения разработке макпро 13 15 года 16 гиг оперы ай5 29 ссд 512 нормальный выбор оцените?
Mike
тогда совсем не догоняю, как правильно.
class Something(private val dependency: Depencency)
Anonymous
огонь
Anonymous
я на будущее
Anonymous
уроки скачал geekbrains норм не знаете ?
Serjio
у меня 15-ка 2011 года 8 гигов ай7 ssd 256 - хватает вроде
Anonymous
Serjio class BLEPeripheral(context: Context) { init { //обрабатываешь создание } }
Mike
я не догоняю.
ну блин, пора учиться создавать классы и использовать их
Serjio
у меня этот init не вызывается сам по себе (вставил туда Log.d - а не вижу их)
Mike
сам не вызовешь — никто не вызовет
Anonymous
Потому что init что ты создал это метод
Serjio
не я, а автор класса. это я понял. я про то, как его вызывать. какой контекст ему передавать.
Anonymous
Init сам вызывается при создании
Александр
грохабельно 🤓
Serjio
какой контекст ему нужен? не приложения же? это другой инит.
Ilya
ну создай и зарегай броадкастРесивер и сделай пендингИнтент на броадкаст
val intent = Intent(this, MyBroadcastReceiver::class.java) intent.putExtra("name", name) val pending = PendingIntent.getActivity(this, 0,intent, 0) сделал setDeleteIntent(pending), но не работает почему-то
Serjio
мой инит - это обычный метод
Ilya
А разве setDeleteIntent не достаточно?
Mike
А разве setDeleteIntent не достаточно?
чтобы кинуть интент — достаточно, чтобы он долетел — нет
Serjio
BLEPeripheral().init(this@MainActivity) (не уверен, что этот тот контекст) - вроде попадаю в инит. копаю дальше
Mike
а action где делать?
в интенте и в интент-фильтре (окей гугл, как зарегистрировать броадкастресивер и закинуть туда интент?)
Andrew
а action где делать?
https://startandroid.ru/ru/uroki/vse-uroki-spiskom/64-urok-26-intent-filter-praktika.html
Serjio
не, какая-то задница. в init попадаю, в нем пытаюсь получить адаптер: mAdapter = mManager.getAdapter(); но потом, после этого, в startAdvertise выходим построке if (null == mAdapter) { Log.i("myserver", "returned since mAdapter == null "); return;
--------
крутое сравнение
--------
ну провались (step into) в getAdapter
такой вопрос. Ты говорил, что выпиливал даггер из проекта. Получается, ты самостоятельно необходимые зависимости где-то создавал и передавал в конструктор? А как время жизни таких объектов определял? Типа если уровень апликейшен - создаешь объект в классе апликейшн? И как быть с инжектом в поле, ну например в активити, что в этом случае делал?
Serjio
ха. провалился. непонятки. при провале вроде все создается (вот картинки) а потом когда вызывается startAdvertise - там уже сразу же mAdapter==null
Serjio
Serjio
Serjio
Serjio
Mike
ты говорил, что не пользовался им тогда
да, я доставал зависимости из аппликейшена, ровно как и до меня оттуда доставали даггер
Ilya
Всё равно ресивер не вызывается
Ilya
экшена не хватает. Того, который слушает ресивер
val intent1 = Intent("ru.snowmaze.action.notificationdeleted") intent filter создал и пихнул его в intent
Александр
Ребят, подскажите какой event отправить в яндекс метрику для отследивания установок приложения?????
Ilya
пихаю вон код кинул, а регистрирую в манифесте. Если я правильно понял
Ilya
А, понял
Ilya
всё равно не работает)0
Ilya
<receiver android:name=".MainActivity$MyBroadcastReceiver" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="ru.snowmaze.action.notificationdeleted" /> </intent-filter> </receiver>
Mike
ресиверы в манифесте всё ещё работают?..