Artemii
Попробуй сначала без кнопок
有毒なたわごと
студия сама на это исправляет
Андрей
к коду вопросов нет тосты есть при нажатии?
有毒なたわごと
нету
Mh
а разве так можно менять размер?
это же все равно что tv.textSize = tv.textSize - 2
有毒なたわごと
я ж говорю. не нажимается
Андрей
скорее всего вьюхи не находит
有毒なたわごと
хм, how to fix?
Sergey
Пришли больше кода
Андрей
в котлине ведь можно напрямую обращаться
Igor
поверх кнопок нет вьюх?
Андрей
без findView
有毒なたわごと
🙅‍♀️
有毒なたわごと
有毒なたわごと
有毒なたわごと
有毒なたわごと
ничего лишнего нетю, а не ворк(
Yaroslav
поставьте брекпоинты в клик-лисенерах и проверьте в дебаге
有毒なたわごと
я когда на кнопку нажимаю у меня текст листает
有毒なたわごと
меня это смущает
Igor
поменяй linearlayout и scrollview местами в xml
Sergey
И сделай LinearLayout на всю ширину
有毒なたわごと
не, кнопочки то сверху, поверх текста
Sergey
У тебя Линеар налазит на скрол
Sergey
Добавь в линеар Top_toTop Start_toStart и Bottom_toTop = Scroll
Николай
Ребяты, такой вопрос появился. Пытаюсь написать клиентскую программу на андроид. работаю с OkHttp. вот у меня есть Activity, ViewModel и класс, который отвечает за выполнение запросов. Активность будет подгружать данные по нажатии на кнопку. Я нажимаю на кнопку и тем самым вызываю с ViewModel метод LoadData() который в свою очередб вызывает метод запуска запроса к серверу. Этот метод запуска запроса выполнит запрос в новом потоке. И тут начались проблемы. Вот активность виснуть не должна ни капли. Выход сделать каалбек? делаю так: client.newCall(request).enqueue(new Callback() { @Override public void onFailure(@NotNull Call call, @NotNull IOException e) { } @Override public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException { } }); Но что мне писать в onResponse? Создавать внутри ViewModel обьект MutuableLiveData<String> и обновлять его, а активити будет на него подписана? Подскажите как правильно реализовывать работу между этим потоком и активити ибо такой подход мне кажеться глупым, а пукан знатно горит...
Sergey
Пришли в личку что сделал в xml
有毒なたわごと
стоп
有毒なたわごと
заработало, уря )
有毒なたわごと
Благодарствуйте, добрые люди
Chriz
Ребяты, такой вопрос появился. Пытаюсь написать клиентскую программу на андроид. работаю с OkHttp. вот у меня есть Activity, ViewModel и класс, который отвечает за выполнение запросов. Активность будет подгружать данные по нажатии на кнопку. Я нажимаю на кнопку и тем самым вызываю с ViewModel метод LoadData() который в свою очередб вызывает метод запуска запроса к серверу. Этот метод запуска запроса выполнит запрос в новом потоке. И тут начались проблемы. Вот активность виснуть не должна ни капли. Выход сделать каалбек? делаю так: client.newCall(request).enqueue(new Callback() { @Override public void onFailure(@NotNull Call call, @NotNull IOException e) { } @Override public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException { } }); Но что мне писать в onResponse? Создавать внутри ViewModel обьект MutuableLiveData<String> и обновлять его, а активити будет на него подписана? Подскажите как правильно реализовывать работу между этим потоком и активити ибо такой подход мне кажеться глупым, а пукан знатно горит...
Всё что напишеш в onResponse будет в мейн треде. Создай MutableLiveData к которой view подписан и передай данные используя postValue
Николай
Всё что напишеш в onResponse будет в мейн треде. Создай MutableLiveData к которой view подписан и передай данные используя postValue
Так а если у меня куча разных запросов будет? Созвать для каждого запроса отдельную лив дату?
Chriz
А еще лучше, напиши google android blueprints и смотри как там сделано, в том числе и АПИ запросы
Николай
пффффф
有毒なたわごと
но почему-то оно только прибавляет
有毒なたわごと
Николай
Если все запросы разные и действия от них разные то да
тоесть хочешь сказать это здравое решение и так люди делают?
有毒なたわごと
тост шёл минус, а шрифт всё равно увеличивается
有毒なたわごと
Chriz
тоесть хочешь сказать это здравое решение и так люди делают?
Кому как, у некоторых один большой класс со всеми данными
Chriz
и его запусают в liveData
Николай
Кому как, у некоторых один большой класс со всеми данными
Ну я мучаюсь в попытках реализовать приложуху на MVVM. Вот и думаю теперь, как его правильно сводить всё.
Chriz
https://github.com/android/architecture-samples/blob/master/app/src/main/java/com/example/android/architecture/blueprints/todoapp/tasks/TasksViewModel.kt Вот как гугл это рекомендует. Почему так сложно поискать ?
Turalllb
Поскажите, запирился гуглить, чем распарсить строку который гугл биллинг возвращает free trial period , jodaTime вроде должен, но что то не выходит
有毒なたわごと
я так и не понимаю, почему шрифт увеличивается, хотя операция --. И вызывается тост minus
Николай
https://github.com/android/architecture-samples/blob/master/app/src/main/java/com/example/android/architecture/blueprints/todoapp/tasks/TasksViewModel.kt Вот как гугл это рекомендует. Почему так сложно поискать ?
потому что сидишь весь день, учишся, потом под вечер уставший пытаешся что-то сделать, гуглишь, видишь кучу разных библиотек, кучу разных механизмов но, зараза не видишь нигде любого примера где делаеться запрос в одном обьекте в отдельном потоке и результать этого запроса переходит в другой обьект и тот с ним работает далее
Николай
все примеры - куча кода в мейн активити
Chriz
тоже от гугла. Может сначала нужно научится искать ?
Chriz
все примеры - куча кода в мейн активити
Ещё найдите приложение Plaid в гитхабе
Дмитрий
тоесть хочешь сказать это здравое решение и так люди делают?
У меня в проекте было ~20 LiveData во вьюмодели 😂
Дмитрий
Пересчитал, 33 а не 20
Sergey
Пересчитал, 33 а не 20
А почему нечёткое количество? По рекомендациям идёт один приватный мутабл дата и его дублирует уже публичный LiveData
Алексей
Всем привет. Встретил неприятный баг при работе с GlSurfaceview. Обработка onSurfaceCreated() в Renderer занимает очень много времени (минуты), т к грузит тяжелый файл. Если во время загрузки пользователь убьет приложение (свайпом из недавних), то при повторном запуске приложение намертво зависает. Сталкивался ли кто-то с этим, может есть идеи как решить? Уже второй день этот баг мучаю и никак(((
Дмитрий
А почему нечёткое количество? По рекомендациям идёт один приватный мутабл дата и его дублирует уже публичный LiveData
У меня они как SingleLiveEvent сделаны, там эти SingleLiveEvent'ы слушают изменения из sharedprefs чтобы вью на них реагировало
Sergey
Ааа. Тогда понятно
Chriz
Ааа. Тогда понятно
Можно ещё .map или .switchMap Использовать и вот тебе нечёткое =)
Chriz
Не совсем правда понял про рекомендации, можешь ссылку скинуть?
private val _live: MutableLiveData<String> = MutableLiveData() val live: LiveData<String> get() = _live
Дмитрий
Вообще как вариант можно сделать одну лайфдату которая будет слушать разные типы Eventов а не создавать миллион разных как у меня
Sergey
У меня просто не было задач их использовать и с я с ними не работал
Дмитрий
Chriz
Понял, у меня вью сразу mutablelivedata слушает
Не критично, но плохо с точки зрения архитектуры
Chriz
получается что вью может сама себя триггерить
Дмитрий
получается что вью может сама себя триггерить
Ну я например такой кейс для тостов юзаю, один раз подписался и дальше в каком-нибудь кликЛистенере viewModel.snackbarEvent.value = R.string.action_loading
Chriz
Ну я например такой кейс для тостов юзаю, один раз подписался и дальше в каком-нибудь кликЛистенере viewModel.snackbarEvent.value = R.string.action_loading
А теперь подумай, зачем view -> viewModel -> view когда можно просто вызвать метод для показа снэкбара ?
Дмитрий
Чтобы не копипастить?
Michail
Привет, подскажите кто знаком с XML, изучаю новый фреймоврк, в нем используется представление в виде XML, прочитал немного про XML: xmlns:mvc - это же пространоство имен mvc, которые используется в корне проекта, но чуть выше используется xmlns - просто без префикса. Обьясните пожалуйста какое пространство имен будет у дочерних элементов?
Дмитрий
А теперь подумай, зачем view -> viewModel -> view когда можно просто вызвать метод для показа снэкбара ?
Но вообще тут ты прав, наверное лучше вызывать его из вьюмодели при старте загрузки данных или типа того
Дмитрий
А как же тесты?
Я в них пока на предначальном уровне понимания(
⬤ vitaly
Какие самые частые причины, что биндинг не работает? Изменение состояние поля даже адаптер не вызывает, тупо игнорится...
⬤ vitaly
как вариант забыл инициализировать его в активити (адаптере)
тогда бы он ругался на моменте вызова сеттера
🐈 гав-гав
тогда бы он ругался на моменте вызова сеттера
тогда он бы не вызвал просто сеттер
🐈 гав-гав
и не ругался бы а просто не показывал ничего так как пустой
⬤ vitaly
я специально логгирую и вижу, что значение у него меняется, а вот вьюха никак не реагирует вообще
Chriz
А как же тесты?
А причём тут тесты ?