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

    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 комментария
  • Golang или Java?

    zagayevskiy
    @zagayevskiy Куратор тега Java
    Android developer at Yandex
    Java.
    Go в андроиде - это экзотика.
    Можете ещё в сторону Kotlin посмотреть, но язык молодой, только-только зарелизился, вакансий мало.
    Ответ написан
    Комментировать
  • Как сделать функцию для приложения что бы можно было говорить в 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().
    Ответ написан
    Комментировать
  • Возникли сложности с формированием запроса API с помощью retrofit?

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

    А вы, я смотрю, не учитесь ничему, в прошлом вопросе я дал вам советы - и вы им не последовали, постите всё ту же говно-копи-пасту. Зря.
    Ответ написан
    Комментировать
  • Ошибка в приложении 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 Куратор тега Java
    Android developer at Yandex
    Ну, если по-простому, то хранить можно в Preferences, для такой задачи этого хватит. Можно хранить в БД, SQLite, например. От задачи зависит, есть разные варианты.
    Отображать можно в ListView, как сказали выше. Для этого в адаптер сеттить только те элементы, которые надо отобразить.
    Не как вариант для вашего случая, но знать стоит - у View есть свойство visibility (andoir:visibility в разметке и get/setVisibility() в коде). Может принимать значения View.VISIBLE/INVISIBLE/GONE. INVISIBLE и GONE различаются в том плане, что при INVISIBLE View всё ещё занимает место на экране, а при GONE - нет.
    Ответ написан
    Комментировать
  • Как В HashMap добавить знчаение HashMap?

    zagayevskiy
    @zagayevskiy Куратор тега Java
    Android developer at Yandex
    Во-первых, что это? Дженерики использовать вам запретили, бьют по рукам?
    HashMap<String, HashMap<String, String>> accommodationMapOur = new HashMap<>();

    Давайте разберемся, что мы тут имеем. Имеем Map, в которой ключ - строка, значение - другая Map. Ок.

    HashMap<String, String> accommodationMapOurTwo = new HashMap<>(); //пустая Map
    accommodationMapOur.put("1", accommodationMapOurTwo); //Ok, запихали в первую мапу вторую.
    accommodationMapOur.put("2", accommodationMapOurTwo); //Ok, сделали это ещё раз, не забываем, что в джаве всё - ссылка.

    То есть добавлять надо каждый раз новую Map, не так ли?
    for (int i = 0; i < 100500; ++i) {
        HashMap<String, String> newMap = new HashMap<>();
        newMap.put(String.valueOf(i + 10), String.valueOf(i + 20));
        accommodationMapOur.put(String.valueOf(i), newMap);
    }


    Например, так.
    Ответ написан
    3 комментария
  • Пособия для изучения Java для Andoid'а?

    zagayevskiy
    @zagayevskiy Куратор тега Java
    Android developer at Yandex
    Ну и зачем плодить вопросы? Как лучше начать изучать (и что) разработку для мобильных платформ (Android)?
    На том же udacity: https://www.udacity.com/course/cs046
    По Android SDK: developer.android.com/index.html
    Уроки на русском: startandroid.ru/ru/uroki/vse-uroki-spiskom
    Но курс на udacity, который я советовал в прошлом треде, лучше тем, что с первых шагов даёт работающее приложение, которое постепенно развивается.
    Ответ написан
    Комментировать
  • Как растянуть изображение по ширине экрана из Canvas?

    zagayevskiy
    @zagayevskiy Куратор тега Java
    Android developer at Yandex
    Используйте drawBitmap (Bitmap bitmap, Rect src, Rect dst, Paint paint)
    src - null , dst - равный размерам канваса.

    Draw the specified bitmap, scaling/translating automatically to fill the destination rectangle. If the source rectangle is not null, it specifies the subset of the bitmap to draw.
    developer.android.com/reference/android/graphics/C...
    Ответ написан
    Комментировать
  • Распознавание цифр

    zagayevskiy
    @zagayevskiy Куратор тега Java
    Android developer at Yandex
    ИМХО, в этом случае стоит использовать сравнение с шаблоном, предварительно выделив скелет. Видел, как этим методом распознавали номера машин, с хорошей точностью.
    Ответ написан