Урок 17. Cоздание и удаление элементов экрана в процессе работы андроид-приложения | Android Studio

Поділитися
Вставка
  • Опубліковано 16 жов 2024
  • Как добавлять на экран и удалять с экрана элементы визуального интерфейса в android-приложениях, как управлять динамически созданными View-компонентами, вы узнаете в этом видеоуроке. На прошлом уроке мы создавали View-элементы экрана в методе onCreate, который стартует при запуске приложения. Теперь научимся создавать и удалять View-компоненты в работающем приложении, а также узнаем, как взаимодействовать с динамически созданными элементами интерфейса в процессе работы приложения.
    Весь плейлист: • Уроки по основам разра...
    Скачать исходный код проекта можно на страничке урока под видео: www.fandroid.in...
    Группа взаимопомощи Вконтакте для начинающих ANDROID разработчиков и программистов: www.fandroid.in...
    Скачать видеоуроки: www.fandroid.in...
    Поддержите наш проект: www.fandroid.in...
    #android #AndroidStudio #startandroid

КОМЕНТАРІ • 71

  • @vyacheslavz5433
    @vyacheslavz5433 Рік тому

    Шикарный урок. Большое спасибо. Побольше таких!!!

  • @cloud-jw9su
    @cloud-jw9su 7 років тому +3

    Благослави вас Господь!

  • @InvincibleXXX
    @InvincibleXXX 7 років тому +8

    Блин, так все хорошо начиналось. Зачем было ставить на перемотку и отдельно записывать голос, что делалось. невозможно ничего понять!

  • @АртурПирожков-ц5у
    @АртурПирожков-ц5у 8 років тому +2

    скажите, а как такое возможно, что одновременно существует сразу несколько обьектов с одинаковыми идентификаторами? если сделать так вручную, например, то компиляция не выполнится. И можно ли как-то обратиться к обьекту посредством его id?

  • @andjusticeforall9473
    @andjusticeforall9473 2 роки тому

    Спасибо за урок! Почему новые кнопки добавляются каждый раз в новую строку (причем на высоту кнопки + некий отступ)? Ведь никаких специальных параметров для новой кнопки здесь не задаётся..

  • @IgorMarkin
    @IgorMarkin 9 років тому +1

    Виталий, спасибо за видеокурс. довольно просто и доступно излагаете самые азы - что очень важно в программировании.
    Я пытаюсь освоить азы программирования под андройд, для скромных задач.
    сейчас столкнулся с проблемой сохранения и последующего восстановления динамических layout'ов (например как в данном уроке).
    как это реализовать? мой опыт мне подсказывает что я не то и не там ищу :(

  • @СтепанТарасов-с5щ
    @СтепанТарасов-с5щ 3 роки тому

    Я не понимаю. как расположить layouts друг под другом. В гугле не забанили, можно пояснительную бригаду?

  • @БэстМаркет
    @БэстМаркет 9 років тому

    Доброго времени. В виджетах не нашел EditText, добавил ExtractEditText, программа работает. Поменяли в поздних версиях?

  • @adbln1
    @adbln1 8 років тому +2

    Спасибо, отличный урок! В качестве ДЗ сделал так, что при нажатии на любую из созданных кнопок появляется тост с текстом этой кнопки.

    • @АлиханХасиев-с7к
      @АлиханХасиев-с7к 3 роки тому

      Привет, а можешь скинуть код мэйна? Не могу понять как автоматически добавлять id новым кнопкам

    • @adbln1
      @adbln1 3 роки тому

      @@АлиханХасиев-с7к к сожалению, не сохранился

    • @MrVaniaFan
      @MrVaniaFan 2 роки тому

      @@АлиханХасиев-с7к точно так же как и кнопку делет, тупо можно скопировать и переименовать на что ругается и айди кнопки заменить, в Онклик свой код вставить , например определить имя нажатой кнопики String text = new_value.getText().toString(); где нью_валюэ имя кнопки которую искали по айди TextView new_value = (TextView) view.findViewById(R.id.editText) ;

  • @Игорь-ч4р7п
    @Игорь-ч4р7п 8 років тому

    Не совсем понял, можно присвоить id кнопке (setId() ) а потом по этому id вызвать метод findViewByld, ведь этот метод возвращает вью прописанные в макете, а кнопку мы создали программно, как в итоге эти два метода можно использовать с одним id

  • @sinushkin
    @sinushkin 8 років тому

    Скажите пожалуйста каким видеоредактором Вы пользуетесь.
    Такие фичи как наезд камеры на код очень интерестны

  • @АлексадрСергеевич-ц6й

    Здравствуйте, а когда будет выложен следующий урок?

  • @alextolstoy5367
    @alextolstoy5367 7 років тому

    Никто не подскажет такая проблема, в общем в программе есть spinner, три поля для ввода, и кнопка с надписью расчет. В общем я хотел чтобы при выборе одного из пункта spinner напротив двух полей ввода появлялись надписи, после чего вводились данные и при нажатии на кнопку расчет производилось вычисление.Вопрос в том что не могу написать код чтобы отдельно работало изменение названий полей ввода и вычисление.Как мне разделить эти два действия.У меня получается что при выборе пункта в spinner ничего не происходит а при нажатии на кнопку расчет происходит изменение название полей ввода и вычисление, что не совсем правильно

  • @MrDepava
    @MrDepava 5 років тому +2

    Всем, кто из будущего: Скорее всего, при добавлении LinearLayout он у вас по умолчанию будет занимать ВЕСЬ экран, чтобы сместить его вниз:
    1. Задайте любой размер (width - 200dp, height - 200dp)
    2. Переместите его по центру или ниже нужного вам элемента
    3. Привяжите стороны LinearLayout по всем направлениям.
    4. PROFIT

  • @Norbinarius007
    @Norbinarius007 9 років тому

    Виталий, сделайте, пожалуйста, урок по генерации apk. В инете видел уроки, но не объясняли для чего что нужно (key, alias, password)

  • @maksymlutsenko4635
    @maksymlutsenko4635 7 років тому

    а можете подробнее объяснить про метод getChildAt .как конкретно обратится к только созданному button .если я не знаю его id

  • @EgorRandomize
    @EgorRandomize 8 років тому

    почему мне не удаётся создать больше одного объекта? пишет мол подобный элемент уже есть...

  • @SAG0T
    @SAG0T 9 років тому +2

    Обратите внимание: начиная с версии API 21 (прошу меня поправить) view кнопка по-умолчанию имеет флаг "textAllCaps = true", таким образом любой текст передаваемый в методе button.setText() будет приведен в ЗАГЛАВНЫЕ БУКВЫ.
    Убрать это можно явно указав button.setTransformationMethod(null);
    или (c 14 API) button.setAllCaps(false);
    спасибо за решение пользователю user1644002 на сайте stackoverflow :)

  • @2Quard
    @2Quard 8 років тому

    а как проверить на присутствие того или иного View в layout`e???? т.е. если типо его нету, то добавить, если есть, то наоборот например удалить??

    • @SevmadSeverodvinsk
      @SevmadSeverodvinsk 8 років тому

      Ловить исключение NullPointerException при попытке обращения к переменной с null (если элемента нет)

  • @toxajunior2076
    @toxajunior2076 9 років тому

    Большое спс за ваш труд! Вопрос.Если int btngravity = Gravity.LEFT ставим по дефолту то в целях сокращения кода может стоит убрать первый кейз из свича который присваивает гравити лефт?Или это будет плохим тоном?Заранее благодарен

    • @alexsas5086
      @alexsas5086 9 років тому

      Toxa Junior Когда Вы начнете выбирать др. rbn у Вас не будет работать rbnLeft, так как не будет обработчика case.

    • @kirillgorbunov2647
      @kirillgorbunov2647 4 роки тому

      @@alexsas5086 не соглашусь. Будет работать и при сокращении кода

  • @demon19954
    @demon19954 9 років тому

    как сделать так чтоб при вводе в текстовое поле кнопки не сдвигались?

  • @Денис-б8и4л
    @Денис-б8и4л 7 років тому

    Подскажите LinerLayout заехал под RadioпGroup на какие параметры обратить внимание, чтобы это исправить?

    • @ЭскендерБилялов-ш1э
      @ЭскендерБилялов-ш1э 7 років тому

      тут вот так должно, если наоборот то он заезжеет вниз

    • @Денис-б8и4л
      @Денис-б8и4л 7 років тому

      Я не так написал, не "под RadioGroup", а за RadioGroup" ))) и ужеразобрался , корневой элемент был RelativeLayout, поменял на LinearLayout все стало ОК..

  • @playmejkr
    @playmejkr 8 років тому

    Спасибо большое за урок.
    Заметил, что при повороте телефона в эмуляторе все созданные кнопки удаляются. Как можно это исправить?

    • @SevmadSeverodvinsk
      @SevmadSeverodvinsk 8 років тому +2

      При смене ориентации активити пересоздается. Чтобы не пересоздавалось, пропишите в манифесте этому активити такой атрибут: android:configChanges="keyboardHidden|orientation|screenSize"

    • @dimagorodko5875
      @dimagorodko5875 5 років тому +1

      В manifests следующее (содержимое экрана при этом не будет менять ориентацию при повороте- урок 5 в помощь, если это необходимо)

      //портретная ориентация приложения, есть еще куча возможных, гугл в помощь.

  • @PlushTrashBrushGame
    @PlushTrashBrushGame 9 років тому +1

    Всем привет! Может кто подсказать как прописать текущую дату в формате ДД-ММ-ГГГГ
    В условие if () ?
    Заранее спасибо.

    • @SAG0T
      @SAG0T 9 років тому

      Riki Tiki Mafi прописать текущую дату очень просто. Создай объект класса Date и отформатируй его объектом класса SimpleDateFormat (в его кнструкторе его укажи формат даты, например "yyyy-MM-dd hh:mm:ss"
      Для логического сравнения дат в контексте "раньше" и "позже" используй методы date1.before(date2) / date1.after(date2)
      найди первый попавшийся простой пример, там все понятно будет

  • @damirnafikov7087
    @damirnafikov7087 8 років тому

    почему у меня кнопки появляются только справа, жа еще и удаляет все кнопки и едит текст?? В чем проблема????((

    • @Flaxymc
      @Flaxymc 8 років тому

      В XML уважно передивись орієнтацію LinearLayout'ів, а також сам LL в який додаєш кнопки.

  • @movieng3914
    @movieng3914 8 років тому

    Добрый день! Правильная реализация ДЗ?
    Button btnNew = (Button) rgGravity.getChildAt(rgGravity.getChildCount());

  • @ЕркебуланИсабеков-и5г

    R.id.XXX R-ругается,горит красным,как решить проблему?

    • @SergShapoval359
      @SergShapoval359 8 років тому +3

      +Еркебулан Исабеков Build -> Clean Project. Потом перегрузи студию

  • @ДмитрийКласс-н4б
    @ДмитрийКласс-н4б 7 років тому

    "В приложении ошибка" - и тухнет. С кодом все впоряде ничего нигде не пропустил, андроид студио не ругается но все равно не робит.

    • @start_android
      @start_android  7 років тому

      +Дмитрий Класс смотрите текст ошибки в LogCat

    • @ДмитрийКласс-н4б
      @ДмитрийКласс-н4б 7 років тому

      FATAL EXCEPTION: main

    • @ДмитрийКласс-н4б
      @ДмитрийКласс-н4б 7 років тому

      И да, сразу хотел спросить, возможно это решит проблему, в моей версии андроид студио, все проэкты по дэфолту стартуют с констейтлеяут, а не с линерлеяаут, я текстово заменил на линерлеяаут, что бы было все как в видео, вот код

  • @Влад-ф6с2р
    @Влад-ф6с2р 9 років тому +1

    крутой урок, я что то так и не догнал как обработать нажатие ново созданных элементов, методом,int id = 1; setId(id++); присвоил id, а как создать findById(); и как обработать нажатие, может я как то не правильно присвоил id,?

    • @pavlo_kulinenko
      @pavlo_kulinenko 9 років тому

      +Iskra Kylak Я тоже столкнулся с этим вопросом, ты узнал, как это сделать?

    • @Влад-ф6с2р
      @Влад-ф6с2р 9 років тому

      +Павло Куліненко та не, решил не заморачивать голову пошел дальше

    • @pavlo_kulinenko
      @pavlo_kulinenko 9 років тому

      А я решил, могу тебе сбросить код

    • @Влад-ф6с2р
      @Влад-ф6с2р 9 років тому

      +Павло Куліненко ОО сбрось пожалуйста это очень интересно)

    • @Влад-ф6с2р
      @Влад-ф6с2р 9 років тому

      Слушай а как можно с тобой связаться, ну куда можно написать тебе что б никто не видел?)

  • @vladmegaphone4131
    @vladmegaphone4131 8 років тому

    Было бы не лишним, если бы эти элементы меню были набросаны в самом видео. Версии AS разные, я вроде тоже самое сделал, а коды в activity_main.xml отличаются. Пытаюсь вот переписать их по примеру в видео. Но называется элемент по одному, а нахожу его совсем по другому. Так например поле ввода текста я нашел под символом телефона (и оно по другому называлось)
    Так не будут лишним паузы, после быстрых действий ввода кода или шастанья по меню, что бы можно было рассмотреть, какой пункт меню был выбран.
    Может я рано сюда смотреть начал, только 10-й день изучения, уроки клацаю подряд, без времени на ЗД (хотя не выполнил только одно из последних, вроде 13-й или 16- й урок. Решил по скорей узнать что то новое, все равно буду все уроки повторно проходить, практика показала в этом есть смысл, по другому смотришь на один и тот же урок.
    Уже и код не выглядит "много буков" уже отличаю. "ага это у нас кнопки, это их лиснеры.. угу, а вот текст для ввода"
    Вот 1-е занятия, просто супер. А сейчас часто на паузу ставлю, по 20 раз перематываю, не успеваю поставить в нужном моменте.
    На уточнения этих моментов уходит время, а значит процесс обучения растягивается. Разумеется мне предстоит просматривать уже готовый материал, но может тут не за горам следующий урок и что то поменяется.

    • @start_android
      @start_android  8 років тому

      +Vlad Megaphone это вполне нормально. За каждым уроком - гора теории в интернете, не ленитесь гуглить. Пересматривать уроки тоже очень полезно - лучше воспринимается

    • @vladmegaphone4131
      @vladmegaphone4131 8 років тому +2

      Start Android Просто я уроки подряд смотрю (и делаю), ленится пока не когда = ) Пересматривать буду 100% сам даже себе эту мысль вчера вывел.
      У меня идея такая. Написать 1-е приложение которое можно будет поставить на смартфон. Самое простое, главное законченную работу.
      Затем попытаться создать его без подсказок, и уже потом наращивать сложности функционала и разных там приколов.
      Такая вот задумка.
      По этому и смотрю урок подряд, собираю по быстрому информацию, а как достигну своей цели, тогда буду вникать уже конкретней.
      Мне так проще, когда вижу всю крину в целом (как на карте, смотрю сначала куда ехать, а уже потом детально изучаю повороты)
      Если я в чем то заблуждаюсь, то интересно в чем, информация не будет лишней. )

    • @n4s781
      @n4s781 8 років тому

      и как ? Написал ?)

    • @vladmegaphone4131
      @vladmegaphone4131 8 років тому

      N4S7 Нет. Пока отложил занятие. С НГ возьмусь опять. форс-мажорная ситуация, пришлось по другому время перекроить. Сам торможу своё развитие, знаю. Но... по другому не выходило.

    • @n4s781
      @n4s781 8 років тому

      А далеко дошел перед тем как оставился процесс ?