Vadim
передать результат из Application'a в свой класс Intereptor который находится в другом модуле
Yury
метод какого класса вызывается и откуда?
Vadim
метод какого класса вызывается и откуда?
в своём AuthenticatorApplication создал переменную в которой храню результат функции которая находится во втором модуле. Получил её резульат всё круто и классно(это User-Agent инфа если что) и после этого я хочу это значение засунуть во второй модуль в качестве value для моего Interceptor'a
Vadim
Сюда вместо "here" internal class HeaderInterceptor : Interceptor { override fun intercept(chain: Interceptor.Chain): Response { return try { val originalRequest = chain.request() val requestBuilder = originalRequest.newBuilder() .header(HEADER_CONTENT_TYPE, HEADER_VALUE_JSON) .header(HEADER_KEY_USER_AGENT, "here") chain.proceed(requestBuilder.build()) } catch (e: Exception) { e.printStackTrace() chain.proceed(chain.request()) } } }
Yury
ну, топорное решение это хранить статик ссылку на Application, и по ней получить доступ к твоему результату
Yury
а лучше хранить где-нибудь в хранилище, и оттуда читать, не через Application
Vadim
ну, топорное решение это хранить статик ссылку на Application, и по ней получить доступ к твоему результату
ну то есть если я правильно понял создать статическую переменную в Application и ссылаться на неё?
Yury
в Application сделать статик поле Application
Yury
в onCreate в это поле засетить this
Yury
и потом из любого места ты можешь получить к нему доступ
Yury
но это считается плохим решением с точки зрения архитектуры.
Vadim
и потом из любого места ты можешь получить к нему доступ
из другого модуля у меня не получается к нему получить доступ
Yury
Application должен быть public, почему не получается-то
Vadim
Application должен быть public, почему не получается-то
ну они по умолчанию все public может я что то не так сделал но всё таки первое я сделал переменную статик в Application companion object { var application = Application() } после в onCreate: application = this в другом модуле пытаюсь вызвать переменную .header(HEADER_KEY_USER_AGENT, AuthenticatorApplication.application) ошибка unresolved reference
Mike
Application должен быть public, почему не получается-то
потому что модуль с интерсептором не зависит от модуля с аппликейшеном
Mike
именно, поэтому и проблема
проблема не поэтому
Konstantin
завези абстракций в модуль интерчептора
Vadim
проблема не поэтому
проблема в том что у меня нет общего модуля где была бы зависимость между этими модулями
Konstantin
типа UserAgentInterface
Vadim
а кинжал, монетка или зубочистка есть?
кинжал только в одном из модулей во втором его нет и он там мне не нужен
Konstantin
говоришь что где то нужен интерфейс, в другом месте реализуешь, в di втыкаешь второе в первое, профит
Vadim
говоришь что где то нужен интерфейс, в другом месте реализуешь, в di втыкаешь второе в первое, профит
мне ведь тогда нужно будет использовать дайгер в двух модулях нет?
Konstantin
ну ты интерсептор же как то делаешь, руками собираешь?
⬤ vitaly
ну то есть если я правильно понял создать статическую переменную в Application и ссылаться на неё?
я когда писал такой лютый говнокод, пхал сабджект в статическое поле. Но это как заклеить жвачкой дырку в зубе))
Vadim
я когда писал такой лютый говнокод, пхал сабджект в статическое поле. Но это как заклеить жвачкой дырку в зубе))
ну у вас видимо был такой гавнокод я пока ничего не нагвнокодил наоборот иду по принципу single resonsibility
Yury
хранить user agent в application это single responsibility?
A
Подскажите, пожалуйста, где искать ошибку. signal 11 (SIGSEGV), code 1 (SEGV_MAPERR) webview.apk (offset 0x8f9000) backtrace: #00 pc 0000000000677330 /system/app/webview/webview.apk (offset 0x8f9000) Больше никакой инфы нет...
Vadim
хранить user agent в application это single responsibility?
1. User-agent у меня существует на протяжении всего времени 2. Высчитываю строку в определенном классе 3. после этого использую значения для interceptor'a так его ответственность добавлять только header'ы
⬤ vitaly
ну у вас видимо был такой гавнокод я пока ничего не нагвнокодил наоборот иду по принципу single resonsibility
Принципы нужны чтобы решать проблемы, а не создавать. Если у тебя появляется необходимость в апликейшене хранить какие-то мутабельные статические данные - такие себе принципы, на мой взгляд))
Andrey
Хочется сделать автоматическое задание размера шрифта кнопок, подстраивающееся под размер кнопок на разных экранах, желательно в хмл-лэйауте. Но android:autoSizeTextType="uniform" пытается выставить максимально возможный размер, что выглядит не очень. Есть какие-то другие варианты?
Andrey
Я догадываюсь, что можно наваять кучу разных со статическими абсолютными размерами лэйаутов под разные экраны, но хотелось чтобы оно автоматически из одного лэйаута бралось и масштабировалось...
Andrey
Можно на каждую кнопку наверное накладывать текст меньшего размера с авторесайзом его штифта, но это же костыли
awawa
Да не надо кучу лэйаутов, просто задать значения шрифтов для разных экранов, а лэйаут один.
awawa
По размеру экрана будет автоматически браться нужный шрифт. Имхо, самый удобный способ решения
Andrey
а что, так можно было? не в коде, а прямо в файле разметки?
awawa
Ну конечно, почитай про ресурсы в андроиде. Есть такой тип как dimen, он определяет всевозможные числовые значения. Можно задать значения для разных экранов, разных локалей, разных ориентаций экранов и т.д.
Andrey
пасиб! )
Александр
всем привет! метод OkHttp .enqueue работает в главном потоке или нет? и можно ли как-то узнать в каком потоке он работает?
Александр
Почитать доки, например
ну в доках нет про это, например, а авторитетные товарищи утверждают, что в другом потоке Schedules the request to be executed at some point in the future. The dispatcher defines when the request will run: usually immediately unless there are several other requests currently being executed. This client will later call back responseCallback with either an HTTP response or a failure exception.
Александр
впрочем, узнатиь что не в главном можно просто попытавшись из него в главный поток вернуть результат, а вот как узнать в каком потоке идет выполнение, если не в главном?
Aleksey
спасибо! 👍🏻
но да, в доку с такими вопросами)))
Евгений
Евгений
Самый лучший варик, заморочиться и прогонять каждую вьшку через класс, где будешь высчитывать размеры и шрифтыв зависимости от screen width/height
Anonymous
народ, подскажите как в нотепад++ искать несколько слов одновременно ? что бы в логе результата подсвечивались все слова, что я вбил
Anonymous
не работает
Anonymous
а стоп
Anonymous
мерси
Lev
Вот у меня есть apk, на основе кордовы. Это приложение для работы с сервером. Я хочу собрать его один раз и раздать на разные серверы (разные ip - test, dev, prod, прочее). Но при запуске, апкшки должны сразу коннектиться к нужному серваку. Как мне это автоматизировать, чтобы не пересобирать под каджый сервер?
Anonymous
Как нарисовать линейку на телефоне ,так чтобы миллиметры везде были миллиметрами (не зависимо от дипгонали и разрешения экрана)?
Anonymous
да
Anonymous
и они были точно такими как на физической линейке
Valentin
Погугли про перевод px(или dp) в миллиметры
Valentin
И рисуй с помощью этого потом
Valentin
Те же обычные линии на канвасе
Valentin
Следуя правилам
Hasan
Привет. Как можно отправить запрос на Retrofit с таким URL адресом? dishes?menuids[0]=2&menuids[1]=4&menuids[2]=3
Hasan
Попробовал делать так:
Hasan
@GET("dishes?{queryString}")
Hasan
но из за вопросительного знака не работает.
Hasan
тут queryString = menuids[0]=2&menuids[1]=4&menuids[2]=3
DeniskaAb
Здравствуйте. Сказали у вас есть пример приложения на котлин с использованием база данных фаерстор от гугла
SerJanna
? Подставляется сам по идее
SerJanna
@GET("dishes?{queryString}")
Прочекай официальную документацию по ретрофиту
SerJanna
Достаточно просто указать GET("dishes")