Ответы пользователя по тегу Android
  • Как убрать кнопки с Диалогового окна?

    zagayevskiy
    @zagayevskiy Куратор тега Java
    Android developer at Yandex
    Судя по коду, авторами этого не предусмотрено. Можно сделать такой хак:
    унаследовать свой диалог от DatePickerDialog, переопределить:
    public View onCreateView(...) {
        final View root = super.onCreateView(...);
        root.findViewById(com.wdullaer.materialdatetimepicker.R.id.ok).setVisibility(View.GONE);
        root.findViewById(com.wdullaer.materialdatetimepicker.R.id.cancel).setVisibility(View.GONE);
        return root;
    }

    И добавить использование autoDismiss, как советовал razer89.
    Но, на самом деле, с точки зрения юзабилити это плохо.
    Ответ написан
    4 комментария
  • Почему xml для android такой ужасный на вид и есть ли альтернативы?

    zagayevskiy
    @zagayevskiy Куратор тега Android
    Android developer at Yandex
    В андроиде параметры с префиксом layout_ используются "родительской" вью(т.е. объемлюшим ViewGroup, например Linear/Relative/FrameLayout) для того, чтобы правильно расположить вью. Они хранятся в LayoutParams, это отдельный класс, свой для каждого ViewGroup. Например, в CoordinatorLayout.LayoutParams есть layout_behaviour - задаёт поведение для этой вью.

    А параметры без такого префикса используются самой вью (например, padding - насколько контент отстоит от границ. Родительская вью об этом ничего не знает, ей это не надо).

    С философской точки зрения это, конечно, мешанина, но на практике довольно быстро начинаешь фильтровать все эти layout_.

    Альтернатива есть только одна - писать лэйауты в коде, но это плохая идея.
    Ответ написан
    Комментировать
  • Как вставить необычный фрагмент во ViewPager?

    zagayevskiy
    @zagayevskiy Куратор тега Android
    Android developer at Yandex
    Можно сделать так:
    Некий интерфейс:
    interface Item {
        Fragment getFragment()
    }

    и две его реализации:
    class StepItemImpl implements Item {
        private StepsMenuItem data;
        StepItemImpl(StepsMenuItem data) {
            this.data = data;
        }
        @Override
        public Fragment getFragment() {
            return StepFragment.newInstance(data.getFileName());
        }
    }
    
    class WhatNextImpl implements Item {
        @Override
        public Fragment getFragment() {
            return WhatNextFragment.newInstance(...);
        }
    }


    далее, вы оборачиваете в эти класс свои данные и у вас получается список:
    List<Item> mItems;
    ...
        @Override
        public Fragment getItem(int position) {
            return mItems.get(position).getFragment();
        }
    ...
        @Override
        public int getCount() {
            return mItems.size()+1;
        }
    /code>
    Как-то так.
    Ответ написан
    Комментировать
  • Как открыть мобильные приложения Одноклассники под iOS и Android на конкретной группе?

    zagayevskiy
    @zagayevskiy Куратор тега Android
    Android developer at Yandex
    Видимо, вам нужно это:
    www.ok.ru/group_name
    www.ok.ru/group/group_id
    Будет выбор между браузером и приложением, если оно установлено.
    Ответ написан
  • Как создать учётную запись для своего android-приложения?

    zagayevskiy
    @zagayevskiy Куратор тега Android
    Android developer at Yandex
    Вам надо использовать AccountManager developer.android.com/intl/ru/reference/android/ac...
    Ответ написан
    Комментировать
  • Как сделать функцию для приложения что бы можно было говорить в Android?

    zagayevskiy
    @zagayevskiy Куратор тега Java
    Android developer at Yandex
    Если вы хотите сделать "звонилку" - то есть общаться с помощью своего приложения голосом, то вам надо использовать VOIP движок. Что могу посоветовать из собственного опыта:
    1) CSipSimple - Open Source приложение на базе pjsip. 1M+ установок в Google Play, хорошо структурированный код, можно использовать как библиотеку (автор это предлагает делать)
    2) PortSIP SDK - платный, но, субъективно, качество лучше. Стоит дорого (тысячи долларов). Есть триал с ограничениями. Обвязки вокруг SDK придётся писать самому, если ничего не изменилось. Зато поддержка отвечает на вопросы и реально решает проблемы.
    3) linphone, как говорили выше. Лично не работал, но штука довольно известная в своей области. Стоит попробовать.

    Кроме софтварной части вам понадобится сервер - Asterisk, например. Можно сторонние сервисы использовать - тут ничего не посоветую.
    Ответ написан
    Комментировать
  • Каким способом передать обьект из одной активности в другую?

    zagayevskiy
    @zagayevskiy Куратор тега Java
    Android developer at Yandex
    1) Передать через Intent Parcelable/Serializable. Подойдёт для простых небольших объектов, не подойдёт для больших или списков - слишком накладно.
    2) Положить в БД, через Intent передавать primary key (или критерии выборки) - удобно, масштабируемо.
    3) Хранить в статичных полях - постарайтесь этого избежать. Причина - пересоздание всего приложения при нехватке памяти, в этом случае восстановить такое статичное состояние - отдельная непростая задача.
    Ответ написан
    Комментировать
  • Передача элементов Hashmap в другую активити?

    zagayevskiy
    @zagayevskiy Куратор тега Java
    Android developer at Yandex
    В Java, вообще-то, не принято хранить данные таким способом. Вам надо сделать класс, в котором будут все эти поля, этот класс так же может реализовывать интерфейс Parcelable, тогда его можно будет запихнуть в Intent.putExtra(), стартовать активити, вытащить с помощью Intent.getExtras().getParcelable() и получить профит. Существуют и другие способы, но вам, кажется, надо для начала освоить этот.
    Ответ написан
    1 комментарий
  • Графика в Android/Java?

    zagayevskiy
    @zagayevskiy Куратор тега Java
    Android developer at Yandex
    Canvas подходит для простеньких 2Д игр, но сильно на него рассчитывать не стоит. Для начала, чтобы покодить игры не заморачиваясь на графику - пойдёт. Плюс - можно делать нормальный UI, а на канвасе - только игру.

    OpenGL - это, как вы понимаете, хардкор для профи. Можно сделать крутые вещи, но вы закопаетесь и продвижение будет медленным.

    Фреймворков, действительно, очень много. Тот же libgdx позволяет за пару дней что-нибудь слепить. Минус, я считаю, в том, что вы изучаете конкретный фреймворк, в других областях знания ширятся слабо и вы менее востребованы. Можно писать игры под андроид, при этом ничего про этот самый андроид не зная.

    NDK - однозначно нет. Это удел серьёзных компаний, с прицелом на все платформы.
    Ответ написан
    1 комментарий
  • Как вызвать Callback() с фрагмента для Retrofit?

    zagayevskiy
    @zagayevskiy Куратор тега Java
    Android developer at Yandex
    Callback - это дженерик. Вы его не параметризовали
    new Callback<KinoModel>(){ ... }
    Ответ написан
  • Как правильно вытаскивать класс из ArrayList?

    zagayevskiy
    @zagayevskiy Куратор тега Java
    Android developer at Yandex
    Это результат вызова метода toString(), унаследованного от Object. То что вы видите - реализация по-умолчанию, Full-qualified-name + @ + адрес объекта в памяти. Вам нужно переопределить этот метод у Person

    @Override
    String toString() {
        return stringFamily + stringFirstName + stringSecondName;
    }


    Но не принято использовать toString() для "бизнес-логики" или отображения пользователю. Лучше сделать формат отдельно, считается, что toString() может быть в любой момент изменён и это не должно повлиять на работу приложения.

    Ещё пару замечаний по коду:
    * B Java не принято писать тип в имени переменной.
    * Члены класса не нужно инициализировать null'ами.
    * Почитайте про 4p (public, protected, private, package-private).
    * Не делайте публичные поля-данные, делайте геттеры и сеттеры. А лучше делайте immutable структуры.
    * Почитайте про конструкторы.
    * Когда-нибудь вы захотите положить свои Person'ы в HashMap/HashSet. Почитайте про методы equals() и hashCode().
    Ответ написан
    Комментировать
  • Как сделать blur слой?

    zagayevskiy
    @zagayevskiy Куратор тега Android
    Android developer at Yandex
    По-моему, то что нужно:
    https://habrahabr.ru/post/215077/
    Ответ написан
    Комментировать
  • Как звонить в одно нажатие?

    zagayevskiy
    @zagayevskiy Куратор тега Android
    Android developer at Yandex
    Можно поставить другой дайлер из гугл плей.
    Ответ написан
    1 комментарий
  • C чем может быть связана ошибка после выполнения ionic build?

    zagayevskiy
    @zagayevskiy Куратор тега Android
    Android developer at Yandex
    Попробуйте в билд-скрипте вместо mavenCentral() использовать
    repositories {
        jcenter {
            url "http://jcenter.bintray.com/"
        }
    }
    Или
    repositories {
        maven  {
            url "http://repo1.maven.org/maven2"
        }
    }
    Ответ написан
  • Android Studio: Как убрать или изменить подсветку края страницы в webview, которая всплывает при достижении конца скроллинга?

    zagayevskiy
    @zagayevskiy Куратор тега Android
    Android developer at Yandex
    WebView.setOverScrollMode(View.OVER_SCROLL_NEVER);
    Ответ написан
    Комментировать
  • Возникли сложности с формированием запроса API с помощью retrofit?

    zagayevskiy
    @zagayevskiy Куратор тега Java
    Android developer at Yandex
    Курить, что такое GSON и как с ним работать. Никакой магии там нет. GSON ищет в вашем респонсе ключ responseData и не находит его, поэтому responseData = null. Надо проставить правильно аннотации. И ваш json вообще не соответствует структуре, которую вы хотите распарсить. Подумайте над этим.

    А вы, я смотрю, не учитесь ничему, в прошлом вопросе я дал вам советы - и вы им не последовали, постите всё ту же говно-копи-пасту. Зря.
    Ответ написан
    Комментировать
  • Как вытащить данные из БД в Textview в greenDao ORM?

    zagayevskiy
    @zagayevskiy Куратор тега Android
    Android developer at Yandex
    Вам бы подтянуть Java Core, работу с коллекциями...

    List<Mushrooms> - это список объектов типа Mushrooms. У него есть метод isEmpy() - проверяющий, пуст ли список. Есть метод get(int) - возвращающий элемент на конкретной позиции, отсчёт начинается с 0.
    У текствью есть метод setText(CharSequance) - туда можно передать строку, которую вы хотите вывести.

    У ваших Mushrooms, наверное, есть какие-то методы get*() - из них, видимо, можно получить инфу.

    Ну и доки по GreenDao стоило бы почитать. Например, у Query есть метод unique(). Но, по-моему, в билдере у вас запрос неправильно сформирован, непонятно.
    Ответ написан
    Комментировать
  • Когда умрет Service?

    zagayevskiy
    @zagayevskiy Куратор тега Android
    Android developer at Yandex
    IntentService создан для того, чтобы умирать :)
    То есть суть такая - вы кидаете ему некую работу, которую делаете в onHandleIntent(); если приходят несколько интентов подряд, то всё это ставится в очередь и выполняется последовательно. Если задача завершилась(onHandleIntent завершился), а новых задач нет - сервис умирает до следующего раза.
    Если надо сохранять между задачами некоторый контекст - пишите свой аналог IntentService, который не будет завершаться. На developers.android.com есть подробная статья на эту тему.
    Ответ написан
    Комментировать
  • Ошибка в приложении must implement onSomeEventListener? Что не так?

    zagayevskiy
    @zagayevskiy Куратор тега Java
    Android developer at Yandex
    Вы в свой API пропихиваете getActivity() в качестве контекста. И в нём проверяете
    try {
                apis = (APIS) ctx;
            } catch (ClassCastException e) {
                throw new ClassCastException(ctx.toString()
                        + " must implement onSomeEventListener");
            }

    Значит активити должна реализовывать этот интерфейс. Лучше бы его отдельной переменной передавать. И проверка эта некошерная, лучше писать
    if (!ctx instanceof SomeMyInterface) {
        throw new IllegalStateException("ctx must imlement " +  SomeMyInterface.class.getName());
    } 
    myInterfaceVar = (SomeMyInterface) ctx;


    Не грешите копи-пастой, хоть читайте код.
    Ответ написан
    Комментировать
  • Как размещать элементы приложения из центра?

    zagayevskiy
    @zagayevskiy Куратор тега Android
    Android developer at Yandex
    Вас спасёт LinearLayout с orientation=vertical и gravity=center
    Ответ написан
    Комментировать