Android studio параметры метода

Содержание
  1. Советы для Android Studio
  2. Делимся исходниками
  3. Android LogCat
  4. Настройки на экране приветствия (Welcome Screen)
  5. Генерация getXXX/setXXX-методов класса
  6. Кодировка
  7. Подключение внешних программ
  8. Переходим на тёмную сторону
  9. Буфер обмена с историей
  10. Указать расположение папки с JDK и Android SDK
  11. Вспомнить параметры метода
  12. Разбиваем редактор кода на две части
  13. Tip of the Day
  14. Сгенерировать Javadoc
  15. Показать справку под указателем мыши
  16. Включить нумерацию строк кода
  17. Разделители между методами
  18. Пометить изменённые файлы звёздочкой
  19. Добавить однозначные import на лету
  20. Окружить строчку кода
  21. Быстрое создание копии строки кода
  22. Быстрое удаление строки
  23. Быстрый переход к определению
  24. Быстрый набор метода, класса, переменной
  25. Переход к следующему/предыдущему методу
  26. Живые шаблоны
  27. Фрагменты
  28. Основные классы
  29. FragmentManager
  30. Методы транзакции
  31. Аргументы фрагмента
  32. Управление стеком фрагментов
  33. Интеграция Action Bar/Options Menu
  34. Связь между фрагментом и активностью

Советы для Android Studio

Делимся исходниками

Если нужно поделиться исходником класса, метода и просто блока кода, то выделяем нужный кусок кода или щёлкаем в свободном месте в редакторе кода правой кнопкой мыши и выбираем пункт Create Gist. . В диалоговом окне выбираем нужные значения. Если у вас нет учётной записи на Гитхабе, то выбирайте анонимный вариант.

Код класса или кусок кода будет размещён на сайте. Вы можете дать ссылку на код нужным людям.

Android LogCat

В студии можно задать цвет для каждого типа сообщений, выводимых в LogCat. Заходим в File | Settings. | Editor | Colors & Fonts | Android LogCat.

Чтобы не сбивать встроенные настройки, сначала нажимаем кнопку Save as. и сохраняемся под другим именем, например, Cat. Далее снимаем флажок Use inherited attributes, чтобы появилась возможность редактирования свойств.

Дальнейшие шаги уже понятны. Выбираем тип сообщения, например, Info и выбираем цвет Foreground щелчком по цветному прямоугольнику.

Цветные сообщения удобнее просматривать, чем однотонные.

Настройки на экране приветствия (Welcome Screen)

На экране приветствия появилась возможность кастомизации некоторых настроек. Первая настройка касается упорядочения проектов. Если их слишком много и вы хотите часть из них сгруппировать, то такая возможность появилась в Android Studio 2.0. Допустим, вы хотите объединить проекты, связанные с котами в отдельную группу Cats. Щёлкаем правой кнопкой мыши на проектах и выбираем пункт New Project Group.

В следующем окне выбираем название.

У вас появится новая группа. Теперь достаточно выбрать нужные вам проекты и через контекстное меню выбрать пункт Move To Group, далее выбираем нужную группу.

Теперь у нас порядок, проекты с котиками хранятся в одном месте.

Следующая кастомизациия касается значка проекта. По умолчанию, на экране приветствия вы не видите никаких значков у проектов. Снова вызываем контекстное меню и выбираем пункт Change Icon.

В следующем окне вы увидите стандартные значки студии для проекта. Нажимаем на ссылку Change. и выбираем свой значок для проекта. Можно выбрать значки для стандартной и тёмной темы студии.

Теперь вам будет проще найти свой проект по значку.

Генерация getXXX/setXXX-методов класса

Студия умеет самостоятельно генерировать так называемые геттеры и сеттеры класса на основе полей класса. Если вы используете правильный стиль кодирования, то сначала требуется небольшая доработка настроек для распознавания префикса m (member) в названии переменных. Откройте окно настроек Android Studio File | Settings. и выберите раздел Editor | Code Style | Java. Перейдите на вкладку Code Generation. В таблице Naming найдите строку Field и в поле Naming Prefix введите префикс m для полей. Затем добавьте префикс s для статических полей в строке Static field.

Подобная настройка научит студию генерировать методы для поля, опуская префикс. Например, для поля mCatName будет создан метод setCatName() вместо setMCatName().

Теперь в файле класса с полями щёлкните правой кнопкой мыши после конструктора и выберите команду Generate…| Getter And Setter, выберите поля класса и щёлкните на кнопке OK, чтобы сгенерировать get- и set-метод для каждой переменной.

Кодировка

В Android используется кодировка UTF-8. Студия по умолчанию использует системную кодировку и у многих это win-1251. Этом может вызвать проблемы при выводе строковых сообщений. В правом нижнем углу можно быстро поменять кодировку для файла проекта.

Для глобального изменения настроек для будущих проектов идём File | Settings | Editor | File Encodings и меняем IDE Encoding и Project Encoding.

Подключение внешних программ

Идём в File | Setting. и выбираем Editor | Tools | External Tools. Нажимаем на значок с плюсом и добавляем путь к исполняемой программе или сценарию bat, cmd и т.п.

Переходим на тёмную сторону

Студия поставляется с тремя предустановленными темами: IntelliJ, Darcula, Windows. По умолчанию, используется тема IntelliJ с светлым фоном. Тема Windows тоже используется светлый фон.

Особый интерес представляет тема с чёрным фоном Darcula. Для тех, кто слишком быстро читает, читаю название темы по слогам: Дар-ку-ла, а не Дракула. Здесь обыгрывается игра слов «dark».

Чтоб переключиться в тёмную тему, открываем окно настроек File | Setting (Ctrl+Alt+S), в диалоговом окне раскрываем категории Appearance & Behavior | Appearance и меняем тему в выпадающем списке Theme.

Читайте также:  Шаблон для иконки андроид

Вы также можете скачать другие темы по адресу ideacolorthemes.org.

Также мы можете доработать под себя предустановленную тему. Для этого откройте в тех же Настройках раздел Editor | Colors & Fonts, внесите требуемые изменения и сохраните свою тему под нужным именем через кнопку Save As. .

Буфер обмена с историей

В студии есть свой продвинутый буфер обмена. Скопируйте несколько раз разные участки кода. Перед вставкой нажмите комбинацию Ctrl+Shift+V. Появится диалоговое окно с историей скопированных строк. Выберите нужный вариант и нажмите OK.

Настройки буфера обмена можно найти в File | Settings. | Editor | General в блоке Limits. По умолчанию у настройки Maximum Number of Contents to Keep in Clipboard используется значение 5.

Указать расположение папки с JDK и Android SDK

Если вы используете Eclipse и студию, то возможно вы уже раньше устанавливали JDK и SDK до студии. Нет необходимости скачивать и устанавливать их по новой. Зайдите в меню File | Project Structure и в пункте SDK Location укажите расположение папок.

Вспомнить параметры метода

Забыли параметры метода? Не беда, поместите курсор в скобки и нажмите комбинацию клавиш Ctrl+P. Подсказка поможет вам сообразить.

Разбиваем редактор кода на две части

По умолчанию редактор кода открывает один активный документ. Если вы хотите видеть сразу два документа (или даже один документ в двух отдельных вкладках), то щёлкните правой кнопкой мыши на вкладке документа и выберите из контекстного меню вариант Split Vertically или Split Horizontally.

Tip of the Day

Если вы уберёте флажок с пункта «Show Tips on Startup», то всегда можете вернуть всё назад, вызвав это окно через меню Help | Tip of the Day.

Сгенерировать Javadoc

В Eclipse в меню был пункт создания Javadoc. В студии нет комбинации клавиш для этой операции. Можно сгенерировать код автодополнением. Набираете команду /** и нажимаете Enter. Будет сгенерирован комментарий Javadoc.

Чтобы получить документацию на основе созданных комментариев, выбираем меню Tools | Generate JavaDoc. . В диалоговом окне выбираем нужные настройки и получаем на выходе набор html-файлов и других сопутствующих документов.

Показать справку под указателем мыши

По умолчанию всплывающая подсказка не появляется при подведении указателя мыши к имени класса, метода и т.д. Я сначала расстроился, но кот сказал, что горю можно помочь. Нужно открыть меню File | Settings | Editor | General и поставить флажок у пункта Show quick doc on mouse move. И откуда кот это узнал?

Включить нумерацию строк кода

По умолчанию нумерация строк отключена. Чтобы включить нумерацию, идём в File | Settings | и выбираем Editor | General | Appearance и ставим флажок у пункта Show line numbers. Впрочем, включить её можно прямо из редактора кода. Щелкните правой кнопкой мыши на серой области слева от кода и в контекстом меню выберите пункт Show Line Numbers.

Разделители между методами

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

Идём в File | Settings | Editor | General | Appearance и ставим флажок у пункта Show method separators.

Пометить изменённые файлы звёздочкой

Я привык, что в редакторе изменённые, но не сохранённые файлы на вкладках помечаются звёздочкой. Так работает в Eclipse, Notepad++ и многих других редакторах. А в Студии почему-то по умолчанию настройка отключена.

Идём в File | Settings | Editor | General | Editor Tabs и ставим флажок у пункта Mark modified tabs with asterisk.

Добавить однозначные import на лету

Очень удобная настройка, позволяющая автоматически импортировать нужный класс при написании кода или вставке фрагмента кода из других источников. Я себе включил.

Идём в File | Settings | Editor | General | Auto Import и ставим флажок у пункта Add unambiguous imports on the fly.

Окружить строчку кода

Нередко бывают ситуации, когда строчку кода надо поместить в условие, цикл и т.п. (if, if/else, while, for, try/catch). Можно немного автоматизировать эту операцию, если установить курсор на нужной строке или выделить фрагмент кода и нажать комбинацию клавиш Ctrl+Alt+T или через меню Code | Surround With.

Быстрое создание копии строки кода

Нажмите комбинацию Ctrl+D (дублирование), чтобы быстро создать копию строки кода под указателем мыши.

Быстрое удаление строки

Чтобы удалить строку, её нужно выделить и нажать кнопку Delete, а можно сразу нажать комбинацию Ctrl+Y (Win) или cmd+backspace(mac).

Быстрый переход к определению

Нажмите клавишу Ctrl и левую кнопку мыши, когда курсор находится на имени класса, метода, поля класса или имени переменной — вы автоматически перенесётесь в место, где находятся их определения. Также можно использовать горячие клавише Ctrl+B.

Читайте также:  Как изменить модель андроида

Быстрый набор метода, класса, переменной

Для быстрого набора переменной можно использовать первую и заглавные буквы в имени метода, класса, переменной. Например, можно набрать sst вместо setStatusText(). Это удобно, когда есть много похожих названий. Такой способ набора позволяет быстрее выбрать нужное имя.

Переход к следующему/предыдущему методу

Используйте горячие клавиши Alt+↓ для перехода к следующему методу, и Alt+↑ для перехода к предыдущему методу.

Живые шаблоны

«Живые шаблоны» — специальное сочетание символов, которые могут преобразоваться в блок кода. Если вы не помните сокращение, то нажмите Ctrl+J (команда Code | Insert Live Template), чтобы увидеть список сокращений.

Если вы помните, то всё намного проще. Например, набираем ifn и нажимаем клавишу пробела. Данные символы преобразуются в код

Живые шаблоны могут работать, как простые сокращатели (например, St превращается в String), а могут учитывать контекст. В нашем примере перед вводом шаблона был объявлен какой-то объект. Поэтому студия автоматически подставила в условие if подходящий объект по смыслу. Можете попробовать данный пример в разных местах вашей программы, чтобы увидеть, как это действует.

Рассмотрим пример использования живого шаблона на практике. Допустим, мы создали некий метод с использованием массива.

Введите внутри метода слово itar, от сокращённого «iteray array». В данном случае даже необязательно прибегать к горячим клавишам, так как студия сама покажет нужную подсказку, остаётся только нажать клавишу Enter. Живой шаблон видит, что метод использует массив, поэтому предложит следующий вариант.

Также можно задать массив внутри метода и по контексту шаблон развернёт код на основе этой информации.

Настройки шаблонов находятся в Settings. | Editor | Live Templates.

Наиболее интересными мне показались шаблоны для создания ссылок к компонентам find и toast.

Теперь можно написать:

После применения шаблона код автоматически развернётся в

Осталось только добавить имя ресурса.

С toast и так всё понятно. После ввода этого шаблона получаем.

Шаблон работает по контексту и подставляет имя вашей активности. Я заменил на свой вариант. Вместо:

Видео о том, как создать собственный живой шаблон.

Источник

Фрагменты

Существует два основных подхода в использовании фрагментов.

Первый способ основан на замещении родительского контейнера. Создаётся стандартная разметка и в том месте, где будут использоваться фрагменты, размещается контейнер, например, FrameLayout. В коде контейнер замещается фрагментом. При использовании подобного сценария в разметке не используется тег fragment, так как его нельзя менять динамически. Также вам придётся обновлять ActionBar, если он зависит от фрагмента. Здесь показан такой пример.

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

Второй подход является наиболее гибким и в целом предпочтительным способом использования фрагментов. Активность проверяет в каком режиме (свои размеры) он запущен и использует разную разметку из ресурсов. Графически это выглядит следующим образом.

Основные классы

Сами фрагменты наследуются от androidx.fragment.app.Fragment. Существует подклассы фрагментов: ListFragment, DialogFragment, PreferenceFragment, WebViewFragment и др. Не исключено, что число классов будет увеличиваться, например, появился ещё один класс MapFragment.

Для взаимодействия между фрагментами используется класс android.app.FragmentManager — специальный менеджер по фрагментам.

Как в любом офисе, спецманагер не делает работу своими руками, а использует помощников. Например, для транзакций (добавление, удаление, замена) используется класс-помощник android.app.FragmentTransaction.

Для сравнения приведу названия классов из библиотеки совместимости:

  • android.support.v4.app.FragmentActivity
  • android.support.v4.app.Fragment
  • android.support.v4.app.FragmentManager
  • android.support.v4.app.FragmentTransaction

Как видите, разница в одном классе, который я привёл первым. Он используется вместо стандартного Activity, чтобы система поняла, что придётся работать с фрагментами. На данный момент студия создаёт проект на основе ActionBarActivity, который является подклассом FragmentActivity.

В одном приложении нельзя использовать новые фрагменты и фрагменты из библиотеки совместимости.

В 2018 году Гугл объявила фрагменты из пакета androd.app устаревшими. Заменяйте везде на версию из библиотеки совместимости. В 2020 году уже используют пакет androidx.fragment.app.

В версии Support Library 27.1.0 появились новые методы requireActivity() и requireContext(), которые пригодятся при написании кода, когда требуется наличие активности и нужно избежать ошибки на null.

Общий алгоритм работы с фрагментами будет следующим:

У каждого фрагмента должен быть свой класс. Класс наследуется от класса Fragment или схожих классов, о которых говорилось выше. Это похоже на создание новой активности или нового компонента.

Также, как в активности, вы создаёте различные методы типа onCreate() и т.д. Если фрагмент имеет разметку, то используется метод onCreateView() — считайте его аналогом метода setContentView(), в котором вы подключали разметку активности. При этом метод onCreateView() возвращает объект View, который является корневым элементом разметки фрагмента.

Читайте также:  Блок страйк для андроида

Разметку для фрагмента можно создать программно или декларативно через XML.

Создание разметки для фрагмента ничем не отличается от создания разметки для активности. Вот отрывок кода из метода onCreateView():

Глядя на этот код, вы должные понять, что фрагмент использует разметку из файла res/layout/first_fragment.xml, которая содержит кнопку с идентификатором android:id=»@+id/button_first». Здесь также прослеживается сходство с подключением компонентов в активности. Обратите внимание, что перед методом findViewById() используется view, так как этот метод относится к компоненту, а не к активности, как мы обычно делали в программах, когда просто опускали имя активности. Т.е. в нашем случае мы ищем ссылку на кнопку не среди разметки активности, а внутри разметки самого фрагмента.

Нужно помнить, что в методе inflate() последний параметр должен иметь значение false в большинстве случаев.

FragmentManager

Класс FragmentManager имеет два метода, позволяющих найти фрагмент, который связан с активностью:

findFragmentById(int id) Находит фрагмент по идентификатору findFragmentByTag(String tag) Находит фрагмент по заданному тегу

Методы транзакции

Мы уже использовали некоторые методы класса FragmentTransaction. Познакомимся с ними поближе

add() Добавляет фрагмент к активности remove() Удаляет фрагмент из активности replace() Заменяет один фрагмент на другой hide() Прячет фрагмент (делает невидимым на экране) show() Выводит скрытый фрагмент на экран detach() (API 13) Отсоединяет фрагмент от графического интерфейса, но экземпляр класса сохраняется attach() (API 13) Присоединяет фрагмент, который был отсоединён методом detach()

Методы remove(), replace(), detach(), attach() не применимы к статичным фрагментам.

Перед началом транзакции нужно получить экземпляр FragmentTransaction через метод FragmentManager.beginTransaction(). Далее вызываются различные методы для управления фрагментами.

В конце любой транзакции, которая может состоять из цепочки вышеперечисленных методов, следует вызвать метод commit().

Аргументы фрагмента

Фрагменты должны сохранять свою модульность и не должны общаться друг с другом напрямую. Если один фрагмент хочет докопаться до другого, он должен сообщить об этом своему менеджеру активности, а он уже передаст просьбу другому фрагменту. И наоборот. Это сделано специально для того, чтобы было понятно, что менеджер тут главный и он не зря зарплату получает. Есть три основных способа общения фрагмента с активностью.

  • Активность может создать фрагмент и установить аргументы для него
  • Активность может вызвать методы экземпляра фрагмента
  • Фрагмент может реализовать интерфейс, который будет использован в активности в виде слушателя

Фрагмент должен иметь только один пустой конструктор без аргументов. Но можно создать статический newInstance с аргументами через метод setArguments().

Доступ к аргументам можно получить в методе onCreate() фрагмента:

Динамически загружаем фрагмент в активность.

Если активность должна выполнить какую-то операцию в фрагменте, то самый простой способ — задать нужный метод в фрагменте и вызвать данный метод через экземпляр фрагмента.

Вызываем метод в активности:

Если фрагмент должен сообщить о своих действиях активности, то следует реализовать интерфейс.

Управление стеком фрагментов

Фрагменты, как и активности, могут управляться кнопкой Back. Вы можете добавить несколько фрагментов, а потом через кнопку Back вернуться к первому фрагменту. Если в стеке не останется ни одного фрагмента, то следующее нажатие кнопки закроет активность.

Чтобы добавить транзакцию в стек, вызовите метод FragmentTransaction.addToBackStack(String) перед завершением транзакции (commit). Строковый аргумент — опциональное имя для идентификации стека или null. Класс FragmentManager имеет метод popBackStack(), возвращающий предыдущее состояние стека по этому имени.

Если вы вызовете метод addToBackStack() при удалении или замещении фрагмента, то будут вызваны методы фрагмента onPause(), onStop(), onDestroyView().

Когда пользователь нажимает на кнопку возврата, то вызываются методы фрагмента onCreateView(), onActivityCreated(), onStart() и onResume().

Рассмотрим пример реагирования на кнопку Back в фрагменте без использования стека. Активность имеет метод onBackPressed(), который реагирует на нажатие кнопки. Мы можем в этом методе сослаться на нужный фрагмент и вызвать метод фрагмента.

Теперь в классе фрагмента прописываем метод с нужным кодом.

Более желательным вариантом является использование интерфейсов. В некоторых примерах с фрагментами такой приём используется.

Интеграция Action Bar/Options Menu

Фрагменты могут добавлять свои элементы в панель действий или меню активности. Сначала вы должны вызвать метод Fragment.setHasOptionsMenu() в методе фрагмента onCreate(). Затем нужно задать настройки для методов фрагмента onCreateOptionsMenu() и onOptionsItemSelected(), а также при необходимости для методов onPrepareOptionsMenu(), onOptionsMenuClosed(), onDestroyOptionsMenu(). Работа методов фрагмента ничем не отличается от аналогичных методов для активности.

В активности, которая содержит фрагмент, данные методы автоматически сработают.

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

Код для активности:

Код для фрагмента:

Связь между фрагментом и активностью

Экземпляр фрагмента связан с активностью. Активность может вызывать методы фрагмента через ссылку на объект фрагмента. Доступ к фрагменту можно получить через методы findFragmentById() или findFragmentByTag().

Источник

Оцените статью