Aleksey
Это как из пушки по воробьям. А нужно всего то вот это. Вот там где перечисление идет в каждой карточке.
Так нужно было сразу скриншот показать, все ж подумали, что у тебя просто список Тут да, либо вложенный рекуклер, либо линеар и руками добавлять, либо рисовать
Сергей
А че да? Разве нормально вызывать AsyncTask из onCreate?
Мнэ..задумался. решил что почему бы нет. Блокирования нет
Сергей
Старт не тормознет.
Eugene
Доброго дня. Подскажите пожалуйста, люди добрые) Пишу переводчик с английского на русский. Использую RxJava2 и Retrofit. Подписан на изменения EditText и с debounce в 1 секунду отправляю запрос на сервер и в TextView устанавливаю перевод, пользуюсь API яндекс переводчика. Суть в том, что когда хочу отчистить EditText, при попытке отправить запрос с пустым значением "text" приходит ошибка, 400 Bad Request и ничего после этого не работает, только если перезагрузить приложение. Можно при желании установить в цепочке ".filter { it.isNotEmpty() }" но тогда в TextView будет приходить перевод последней оставшейся буквы при попытке стереть все, что логично, а мне надо чтобы при стирании EditText в TextView был виден только hint. Что можно сделать? Как поступить? Заранее спасибо.
у вас onError срабатывает и подписка завершается, скорее всего, а вы пустое значение text не отправляйте и вам не будет приходить ошибки)
lbai
Старт не тормознет.
Эм а если из бекстека открыть активити, таска не отработает)) кек
Alexey
вообще лучше код показывайте, так не видно и непонятно что у вас
fun getResultBasedOnQuery(query: EditText) { val disposable = getObservableQuery(query) .filter { it.isNotEmpty() } .subscribeOn(Schedulers.io()) .debounce(1, TimeUnit.SECONDS) .switchMap { api.getTranslate( Constants.API_KEY, it, "${repository.currentLangIn}-${repository.currentLangOut}", Constants.FORMAT ) } .observeOn(AndroidSchedulers.mainThread()) .subscribeWith(getObserver()) disposables.add(disposable) } private fun getObservableQuery(query: EditText): Observable<String> { val publishSubject = PublishSubject.create<String>() query.addTextChangedListener { publishSubject.onNext(it.toString()) } return publishSubject } private fun getObserver(): DisposableObserver<Translation> { return object : DisposableObserver<Translation>() { override fun onNext(t: Translation) { viewState.showTranslation(convertArrayToString(t.text)) } override fun onError(e: Throwable) { viewState.showTranslation(e.toString()) } override fun onComplete() { } } }
Alexey
у вас onError срабатывает и подписка завершается, скорее всего, а вы пустое значение text не отправляйте и вам не будет приходить ошибки)
То есть добавить фильтр? Я так и делаю, и пустой запрос не отправляется. Но проблема тогда в том, что в TextView остается одна буква, ведь когда мы пытаемся стереть текст, в итоге отправляется запрос с последней буквой оставшейся, а пустой щапрос уже не проходит
Eugene
То есть добавить фильтр? Я так и делаю, и пустой запрос не отправляется. Но проблема тогда в том, что в TextView остается одна буква, ведь когда мы пытаемся стереть текст, в итоге отправляется запрос с последней буквой оставшейся, а пустой щапрос уже не проходит
а вам 1 букву тоже надо переводить?) просто и это отфильтруйте) но это некрасиво сделайте какой-то флаг isTextCleared и если удалили все, то не отправляйте, даже если там 1 буква осталась
Eugene
вариантов куча просто вас не нужно отправлять текст, если удалили слово для перевода
Сергей
Эм а если из бекстека открыть активити, таска не отработает)) кек
Ну, смотря что там инициализировать в таске. Может поле активити. А так конечно в оРезуме
Alexey
Ну или "in"
Сергей
Но ведь есть слова и из одной буквы состоящие, как например "в" - "into")
Этих будет слишком много Вообще в норме поиск тоько с трех букв начинать. Или одной и пробела, или двух и пробела если язык с очень короткими словами
Alexey
Этих будет слишком много Вообще в норме поиск тоько с трех букв начинать. Или одной и пробела, или двух и пробела если язык с очень короткими словами
Но это как то получается странно, то есть что это за переводчик, который не может перевести предлоги например)
Alexey
А они в основном короткие как раз
Alexey
В, на и т.д.
Alexey
"От" в конце концов)
Eugene
блин, вы debounce и filter местами поменяйте)
Eugene
и пустая строчка не будет вызываться
Артем
а зачем? есть стандартные кнопки если юзаешь material тему, там еще проще с ними работать
lbai
некошерно, тащемта
Артем
это иконка, её можно и в обычную засунуть
lbai
это имеджбатон с бекграундом через xml
Anonymous
как из блока try получить response? try { Request request = new Request.Builder() .url(urls + KEY) .get() .build(); Response response = client.newCall(request).execute(); } catch (IOException e) { Log.d(TAG, "Auth error: " + e); } return response (?);
Кирилл
Вопрос: я читал, что colorPrimaryVariant и colorSecondaryVariant это темные оттенки, но сейчас наткнулся на colorPrimaryDark и colorSecondaryDark. Получается Variant это не тёмный оттенок цвета?
jV
С чем может быть проблема, при навигации из разных фрагментов, один и тот же макет отображается по разному. Вот нормальное отображение ^
jV
А вот второй случай, какое то смещение вверх не понятное
Dug
Параметр fitsSystemWindows у контейнера, возможно
jV
Такой параметр не используется там
jV
все максимально просто
jV
jV
fitsSystemWindows="false" ? тоже не помогло
Dug
Параметр fitsSystemWindows у контейнера, возможно
У контейнера для фрагмента, а не у самого фрагмента.
.
@neketsh спасибо за подсказку по корутинам, действительно помогло
jV
если имеется ввиду, тут тоже никак не помогло к сожалению
Дони
Всё о Java 13: погружение в мир обновлений Нашего полку прибыло: встречайте секреты Java 13! Рассказываем о том, что нового, почему это важно, и как отразится на работе джавистов. https://proglib.io/sh/7WDa1v3PbG
Дони
Там ниже есть на счёт try
Anonymous
Спасибо
Дони
Надеюсь поможет
Дони
😁
Anonymous
Создание переменной помогло, приложение запускается, но сразу после появления интерфейса появляется ошибка и закрывает приложение, в логах пока что пусто, гуглю ошибку, думаю что связано с ошибкой подключения к урл
mike
А можно как-то наблюдать за изменениями объекта?
Сергей
Нужно. См.MutableLiveData.
BDB 🏴‍☠️
Всем привет. Апп крашится но не говорит об этом и сразу перезапускается. в логкате не успеваю посмотреть
BDB 🏴‍☠️
что мб не так сделал?
mike
Нужно. См.MutableLiveData.
Почему нужно? 😁
Mykyta
что мб не так сделал?
Поменяйте в правом спиннере logcat на show all, фильтр на error и увидите краш вашего предыдущего запуска с предыдущим pid
Александр
что мб не так сделал?
А ещё можно юзануть отладочку и брейкпоинты.
Александр
Сергей
Почему нужно? 😁
Для многих случаев когда данные меняются асинхронно это лучше чем коллбэки
BDB 🏴‍☠️
на телефоне апп тип не крашится а просто закрывается, а он крашится
BDB 🏴‍☠️
вот так вот :D
Anonymous
Всем привет как загружать медиа файлы, а потом читать и вставлять
Anonymous
Через базу данных firebase
Сергей
Всем привет как загружать медиа файлы, а потом читать и вставлять
Вопрос из серии "как приготовить еду" Загрузить Прочитать Вставить.
K1tana
Допустим у меня есть диаграмма в виде круга. И она поделена на части с разными цветами и отображает сколько процентов занимает то или иное место. Как сделать так, чтобы это высчитывалось в реал тайме и размеры соответсвенно менялись?
BDB 🏴‍☠️
поймешь. https://www.youtube.com/watch?v=lPfQN-Sfnjw&t=566s
K1tana
Типа такого
Sergey
А че да? Разве нормально вызывать AsyncTask из onCreate?
А чем onCreate хуже для AsyncTask, чем другие места?
K1tana
А в общем и целом как это делается? Можешь привести пример? И что знать нужно?
Сергей
таки вы хотите поговорить нормально ли вообще использовать таску в 2k19? в данном примере, ок
Ну, в доках и примерах андроида по скажем room есть до сих пор. Ну и лениво легаси код переписывать.
K1tana
Вместо AsyncTask обычно используется реактивная джава?
BDB 🏴‍☠️
Спасибо
на здоровье
Sergey
Вместо AsyncTask обычно используется реактивная джава?
Я что-то не вижу, что она деприкайтед.
K1tana
Так я спрашиваю)
K1tana
Просто почему одни юзают таск, а другие rx?
Sergey
Просто почему одни юзают таск, а другие rx?
Можно копать лопатой, а можно мотоблоком. Мотоблоком быстрее, но не всегда. 🤷‍♂
K1tana
Тогда в каких случаях предпочтительно использовать таск вместо rx?
Сергей
Просто почему одни юзают таск, а другие rx?
Многие не используют рх. Или еще или уже.