• Почему могут различаться результаты select в Realm?

    @lacredin Автор вопроса
    Программист
    Как в комментариях заметил aelimill, надо закрывать работу с eralm после выполнения какой либо операции
    Ответ написан
    Комментировать
  • Как тестировать выгрзку приложения из памяти на android?

    @lacredin Автор вопроса
    Программист
    Мне помогло:
    В разделе «Настройки» → «Параметры разработчика» прокрутите вниз до раздела «Приложения» и включите параметр « Не сохранять действия» .

    Вот с этого сайта
    https://stackoverflow.com/questions/12840742/how-t...
    Ответ написан
    Комментировать
  • Как отсортировать числа в конец массива?

    @lacredin Автор вопроса
    Программист
    Можно вот так сделать. Пример написан на kotlin.
    Этот код поместит любую строку, начинающуюся с числа ниже строки, начинающейся с другого символа.
    val russianCollator = Collator.getInstance(Locale("ru", "RU"))
    val array = arrayListOf("Ab", "01", "Ba", "Aa", "90")
            val russianCollator = Collator.getInstance(Locale("ru", "RU"))
            val array_2 = array.sortedWith(
                    kotlin.Comparator { o1, o2 ->
                        if(o1.firstOrNull()?.isDigit() == true && o2.firstOrNull()?.isDigit() == false) return@Comparator  1
                        if(o1.firstOrNull()?.isDigit() == false && o2.firstOrNull()?.isDigit() == true) return@Comparator  -1
                        russianCollator.compare(o1, o2)
                    }
            )


    Хотя, заявленному в описании требованию, этот код не соответствует, как минимум, символы типа ! +- и тд. будут стоять первыми
    Ответ написан
    Комментировать
  • Как правильно собирать два приложения, используя productFlavors в android?

    @lacredin Автор вопроса
    Программист
    Конкретно в моём случае, была проблема в том, что я использовал ContentProvider, у которого не позаботился о уникальном имени.
    Как только имя стало зависеть от версии productFlavors, всё стало работать.

    Вот так выглядит изменённый провайдер
    <provider
                android:name="android.support.v4.content.FileProvider"
                android:authorities="@string/provider_authorities"
                android:exported="false"
                android:grantUriPermissions="true">
                <meta-data
                    android:name="android.support.FILE_PROVIDER_PATHS"
                    android:resource="@xml/file_path">
                </meta-data>
            </provider>


    Параметр @string/provider_authorities я беру из xml, привязного к productFlavors
    Ответ написан
    Комментировать
  • Google console может ловить обработанные исключения?

    @lacredin Автор вопроса
    Программист
    Для нужной мне функциональности по Firebase, один из сервисов google.
    Ответ написан
    Комментировать
  • Почему view становится не кликабельным после анимации?

    @lacredin Автор вопроса
    Программист
    Проблема в том, что у анимации есть параметры
    android:fillBefore
    android:fillAfter
    Если android:fillBefore = true, то все преобразования с объектами надо сделать до запуска анимации, а если делать их в конце анимации(в слушателе onAnimationEnd), то отображение объектов вернётся в первоначальное состояние, но сами объекты при этом могут изменить своё местоположение, как это было в моём коде.
    А если android:fillAfter = true, то все преобразования надо сделать после анимирования.
    Ответ написан
    Комментировать
  • Как менять местами view в LinearLayout с анимацией?

    @lacredin Автор вопроса
    Программист
    Проблема с анимацией была в том, что я сдвигал не тот view, который добавлял в LinearLayout, а его children, по этой причине children view скрывался, когда доходил до границы parent view.
    Ответ написан
    Комментировать
  • Как в layer-list изменить цвет вектора?

    @lacredin Автор вопроса
    Программист
    Как изменить цвет из layer-list я не нашёл, но для меня подошёл другой метод.

    В векторный файл я добавил android:colorTint, который ссылался на файл drawable с цветами для разных состояний кнопки.

    Вот так теперь выглядит код векторного файла
    <vector android:height="48dp" android:viewportHeight="24.0"
          android:viewportWidth="24.0" android:width="48dp" xmlns:android="http://schemas.android.com/apk/res/android"
          android:tint="@drawable/color_state_toggle_rich_edit_text"
    >
    <path android:fillColor="#FF000000"
        android:pathData="M3.9,12c0,-1.71 1.39,-3.1 3.1,-3.1h4L11,7L7,7c-2.76,0 -5,2.24 -5,5s2.24,5 5,5h4v-1.9L7,15.1c-1.71,0 -3.1,-1.39 -3.1,-3.1zM8,13h8v-2L8,11v2zM17,7h-4v1.9h4c1.71,0 3.1,1.39 3.1,3.1s-1.39,3.1 -3.1,3.1h-4L13,17h4c2.76,0 5,-2.24 5,-5s-2.24,-5 -5,-5z"/>
     </vector>

    Вот так выглядит код файла с цветами (drawable/color_state_toggle_rich_edit_text.xml)
    <?xml version="1.0" encoding="utf-8"?>
    <selector
        xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_checked="true"
        android:color="@android:color/black"
        />
    <item
        android:state_checked="false"
        android:color="@color/color_toggle_button"/>

    Решение нашёл на этом форуме

    stackoverflow.com/questions/43847170/android-how-t...
    Ответ написан
    Комментировать
  • Как работать с автозаменой android в EditText?

    @lacredin Автор вопроса
    Программист
    Автозамена работает по принципу:
    Сначала, заменить слово, которое редактируется(даже если замена происходит на тоже самое слово)
    Затем добавить символ конца слова(пробел, абзац и т.п.)
    Зачем так сделано не знаю.
    В соответствии с этим принципом в afterTextChanged сначала попадает строка с заменённым словом и сразу же за ней строка с новым символом(afterTextChanged вызывается дважды).

    И здесь есть одна тонкость. Если во время первого вызова afterTextChanged изменить содержимое editText (касается большинства наследников TextView), то второго вызова с добавлением символа конца слова не произойдёт.
    А поскольку нельзя напрямую перехватывать символы от виртуальной клавиатуры(разве что подключаться к ней, но возможно ли это и как это делается я не знаю.), то узнать происходит ли обычная замена или замена в следствии конца слова не представляется возможным(во всяком случае я не нашёл способа, это не значит, что его нет).
    Ответ написан
    Комментировать
  • Как заставить работать ViewPager + TabLayout в ScrollView?

    @lacredin Автор вопроса
    Программист
    ViewPager должен иметь фиксированную высоту когда находится в ScrollView. Соответственно, если нужна динамическая высота, то придётся изменять её из java кода.

    В моём случае, так как ViewPager находится в другом layout файле, то устанавливать статическую высоту надо не ViewPager, а через который он подключается.
    Ответ написан
    Комментировать
  • Как реализовать USB host/device(virtual com port) устройство?

    @lacredin Автор вопроса
    Программист
    Единственный способ, которым можно такое осуществить - это менять настройки USB по времени.
    Настраиваем устройство как host, ждём, скажем, 3 секунды, если флешка не была подключена, то перенастраиваем устройство на device и ждём ещё 3 секунды подключения компьютера, если нет, то снова переключаемся на host и так далее.
    Ответ написан
    Комментировать
  • Как сменить текущий activity из Application?

    @lacredin Автор вопроса
    Программист
    В общем из Application можно вызывать startActivity, но только с оговорками
    1. При вызове c Context из Aplication в Intent надо добавить флаг FLAG_ACTIVITY_NEW_TASK, который создаст новую задачу для нового активити, к текущему даже не будет вызвана OnPause().
    2. Что бы завершить текущие активити надо добавить флаги FLAG_ACTIVITY_CLEAR_TOP, FLAG_ACTIVITY_CLEAR_TASK.
    Итого мой код получился таким:
    Intent intent = new Intent(MyApplication, Login.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
    MyApplication.startActivity(intent);
    Ответ написан
  • NavigationDrawer в каждом activity надо новый создавать?

    @lacredin Автор вопроса
    Программист
    Как я понял, ответ на мой вопрос - "Да".
    Просто есть разные подходы проектирования системы.
    • В одном мы используем только фрагменты.
    • В другом мы создаём NavigationDrawer каждый раз заново, но при этом не пишем реализацию создания в каждом классе.
    Ответ написан
    Комментировать
  • Как работать с портом AUX USART на отладочной плате Quectel_M80_EVB?

    @lacredin Автор вопроса
    Программист
    Через порт AUX в принципе запрещена передача TCP команд.
    Ответ написан
    Комментировать
  • Как правильно отправить POST запрос на низком уровне абстракции?

    @lacredin Автор вопроса
    Программист
    Прошу прощения, https случайно там оказалось.
    Делал я с http, порт как вы видите в строке (AT+QIOPEN="TCP", "64.233.165.94",80 ) восьмидесятый
    Или его надо в другое место дописать?
    Ответ написан