Ответы пользователя по тегу Android
  • Как отправить Post запрос в json используя retrofit2?

    @red-barbarian
    что бросается в глаза
    "https://faucetpay.io/api/v1/" сделать "https://faucetpay.io/api/v1"
    Ответ написан
    Комментировать
  • Стоит ли учить Java для android?

    @red-barbarian
    Если планируете заняться профессионально , то нужно знать два языка. Если пишите для себя достаточно kotlin.
    Сейчас почти все проекты начинаются как kotlin. И большинство переписываются (или дополняются) на котлин. Т.е. вероятность, что на легаси проектах будет java есть.
    Ответ написан
    Комментировать
  • Как запустить второе Activity с помощью kotlin?

    @red-barbarian
    Прямо под Ваш случай написали доку
    Start another activity
    Вообще она (документация там) классная. Описано много частых случаев в примерах. И главное у Вас не будет пробелов в знаниях.
    Ответ написан
    Комментировать
  • Как организовать синхронную последовательность команд на колбеках с RxJava2?

    @red-barbarian
    Советы на то, что я понял из вопроса)
    1. разделить callback'и и rx. Т.е сделать обвертки которые возвращают Observable/Single/... т.е. типа (назовем) RxB
    2. на более абстрактном уровне работа с RxB . стандартные merge, flatMap и тд (стандартный код Rx)

    и) Лучше вместо PublishSubject использовать PublishRelay

    пункты стандартные. Можно почитать почти во всех книгах. Главное разделить на уровни и тогда все станет ясно
    1) callback -> rxjava
    2) rxjava код
    3) rxjava подписка в ui
    Ответ написан
    Комментировать
  • Как создать XML-файл с программным кодом для нескольких Activity?

    @red-barbarian
    пару-тройку идей:
    - сделать fragment. Код написать в фрагменте.
    - создать класс обработчик, которому будут делегировать обрабатывать нажатия и проч
    - создать кастомную вьюху. Которая будет сразу вставляться ( вместо include)

    на выбор. Исходите от своих способностей и требований приложения.
    Ответ написан
    Комментировать
  • Как организовать передачу данных из Activity в Presenter используя MVP?

    @red-barbarian
    Не надо хранить промежуточные данные. Презентер сразу получает данные от вьюхи. presenter.setTime(time)
    Затем презентер принимает решение, что с ними делать и если отображать то вызывает view.update(time)
    Кстати, обязательно разделяйте презентер и активити интерфейсом.
    Ответ написан
    Комментировать
  • DatePicker как вывести день недели?

    @red-barbarian
    создать расширение
    DatePickerDialog.updateDate(Calendar)...
    далее

    val datePicker = DatePickerDialog(this).apply{
        updateDate(Calendar.getInstance())
        setOnDateSetListener{_,.....
                textView2.text = ....
        }
    }

    datePicker.show()
    Ответ написан
    Комментировать
  • Почему пишет "приложение AppName остановлено"?

    @red-barbarian
    Потому что из бэкграунда не надо менять вьюхи.
    Или если менять то не через set
    Ответ написан
    Комментировать
  • Паттерн MVP - в чём его суть?

    @red-barbarian
    Cуть в том, что код в активити сложно тестируем. Кроме того, проблема разрастания активити, включение в него разного рода кода который работает с вьюхами, логикой, базой данных, сервисами и проч и проч.
    Поэтому программистами искались выходы и находились. )
    MVP был придуман задолго до андроида. Суть его (как и других аналогичных шаблонов) в разделении модели и ui. Особенность в том, что мы делаем полностью пассивную вьюху, логику вьюхи переносим в presenter.
    схематично это так: есть интерфейс view. активити реализует этот интерфейс. презентер знает об этом интерфейсе.
    Получается презентер не зависит напрямую от активити, только от некого интерфейса. Поэтому его сравнительно легко тестировать (подставляя свою заглушку view)
    Так решается две основных проблемы:
    - код стал более тестируемым
    - код разделен на пассивную активити и ее логику в презентере.
    По вопросам:
    1. активити читает пароль и логи и передает их в презентер (вызывая соотвествующие методы презентера). а он далее из обрабатывает.
    2. отрисовку данных делает активити с интерфейсом (названным например ActivityView). презентер имеет ссылку на этот интерфейс (активити передает свою ссылку ему), а далее вызывает например activityView.setText(text)
    3. есть два подхода
    а) время жизни презентера равен (не больше) времени жизни активити
    б) время жизни презентера больше времени жизни активити
    соотвественно а) данные сохраняются в budle и передаются в презентер
    б) данные хранятся в презентере
    4 - выше
    5. активити - пассивный объект. управление через презентер. любая хоть немного сложная логика в презентер.
    Применение интерфейсов обязательно. иначе потеряем тестируемость и не избавимся от жесткой зависимости презентер-активити.

    это все описано очень неточно. например вместо "активити" можно подставить "фрагмент". но суть надеюсь понятна.
    Ответ написан
    Комментировать
  • Handler делает задержку не правильно. Как сделать реальную задержку по времени?

    @red-barbarian
    время нужно засекать по часам. хендлер нужен только для обновления view.
    Ответ написан
    Комментировать
  • Как изменить фон ImageButton?

    @red-barbarian
    1) в layer-list сделаете кнопку с иконкой и нажатую кнопку
    в selector сделаете кнопку с двумя состояниями (или больше) (первое с press=true)
    сделаете background = вашему selector
    2) сделать две иконки круглые - одна нажата вторая нет. сделать на них селектор и вставить его в бекграунд кнопки
    3) сделать CardView. сделать ее нажимаемой и скруглить углы до окружности.
    Ответ написан
    Комментировать
  • Как поддержать разные разрешение в экране android?

    @red-barbarian
    dp везде одинаков. Кнопка будет везде одного размера. Другое дело, что экраны могут быть маленькие и большие. Поэтому относительный размер кнопки по сравнению с экраном может быть разный. Если это тебе не нравится, то делай относительные размеры кнопок.
    Ответ написан
    Комментировать
  • Как обработать нажатие на отдельный элемент RecyclerView?

    @red-barbarian
    Ответ написан
    Комментировать
  • Каждый раз делать фрагмент?

    @red-barbarian
    Насколько помню, там объяснение. Что если вы захотите переделать активити используя фрагменты, то это будет трудно, чем изначально использовать фрагменты.
    ключевое здесь "если мы захотим фрагменты".
    Если же нам просто нужно простая активити и мы ее трогать не будем, то зачем городить. Нужно сделать это проще.
    В Blueprint
    обрати внимание на разницу между without the use of Fragments и с фрагментами
    Фрагменты ввелись для упрощения кода (разбивание сложной системы на простые части). Та часть которая релизовала интерфейс вьюх в MVP вынеслась в фрагменты. Остальная осталась в активити.
    фрагменты стали реализацией Contract.View в MVP.
    Так уменьшили сложность.
    Ответ написан
    Комментировать
  • Как сделать автосохранение во фрагменте по кнопке back?

    @red-barbarian
    Правильно ли это?
    Если считаешь, что правильно с точки зрения пользователя то посмотри на
    onStop
    onPause
    onBackPressed
    Ответ написан
  • Как сделать меню главной страницы из RecycleView?

    @red-barbarian
    это интересно и полезно
    определяем модель которая будет возвращать картинку (ресурс) и текст (ресурс)
    пример в разделе Defining a Model. далее по шаблону.
    Ответ написан
    1 комментарий
  • Как проверить запущена ли процедура в основном потоке или нет?

    @red-barbarian
    никак нормально)
    некоторые вещи специально делаются, что бы вызываться на маин потоке.
    если очень есть желание, то сделайте обвертку и назовите по другому.
    возможно также, что процедурке (методу), нужен не ui- поток, а просто Looper. Тогда добавьте лупер.
    Из вопроса не понятно, что нужно.
    Ответ написан
    Комментировать
  • Как сделать чтобы после удаления android приложения КЭШ не отчищался?

    @red-barbarian
    Public files: Files that should be freely available to other apps and to the user. When the user uninstalls your app, these files should remain available to the user. For example, photos captured by your app or other downloaded files should be saved as public files.

    Save files on device
    Ответ написан
    Комментировать
  • Почему savedInstanceState всегда возвращает null?

    @red-barbarian
    как то все запутано.
    savedInstanceState Bundle: If the activity is being re-initialized after previously being shut down then this Bundle contains the data it most recently supplied in onSaveInstanceState(Bundle). Note: Otherwise it is null.

    при пересоздании не будет нул.
    Для Вашего случая, может отделить логику от презентации?
    Например количество попыток это скорее понятие существующее на уровне всей игры, а не на уровне (и времени жизни) активити. Поэтому и привязывать его к жизни приложения (Application).
    Думаю проще будет, чем гонять данные из первой активити в третью
    Ответ написан
    Комментировать
  • AlarmReceiver как отменить оповещение?

    @red-barbarian
    Вот пример Overflow
    в доке написано, cancel удаляет все алармы которые подпадают под фильтр filterEquals(Intent).
    В описании filterEquals(Intent)
    Determine if two intents are the same for the purposes of intent resolution (filtering). That is, if their action, data, type, class, and categories are the same. This does not compare any extra data included in the intents.


    т.е. для отмены нужно создать intent такой же как для установки. запихнуть его в pendingintent и запустить cancel
    Ответ написан
    2 комментария