Android studio вернуть изменения

Как вернуть проект назад к предыдущей фиксации в студии android

Я работаю над проектом в студии Android и хотел бы вернуться к предыдущему нажатию. Я попытался
VCS => Git => Сбросить головку (жесткий)
Но мой проект в Android Studio не изменился, вероятно, потому что я делаю что-то неправильно. Я хотел бы вернуть проект в Android Studio до определенного более раннего коммита, который я нажал, и я вижу на github. Меня не волнуют какие-либо изменения, которые я сделал со времени более раннего толчка.
Кроме того, я хотел бы, чтобы это было сделано через графический интерфейс в Android Studio, если это возможно.

Инструкции Android Studio : если вы хотите сделать это в Android Studio, нажмите alt + 9 чтобы открыть панель управления версиями. Перейдите на вкладку « Log » и щелкните правой кнопкой мыши предыдущую фиксацию. Выберите Checkout Revision .

Инструкции командной строки : откройте инструмент командной строки, который вы используете. Перейдите в каталог Git приложения Android (с помощью cd ). Выполните git log и найдите предыдущую фиксацию, к которой хотите вернуться.

Если это фиксация, к которой вы хотите вернуться, затем выполните git checkout 7c247b .

Значок, окруженный красным прямоугольником на изображении, сделает трюк

Щелкните правой кнопкой мыши папку, в которой находится папка Github, нажмите Git Bash Here и введите git reset —hard

Источник

Настройки и состояние приложения

Сохранение состояния приложения

В одной из предыдущих тем был рассмотрен жизненный цикл Activity в приложении на Android, где после создания Activity вызывался метод onRestoreInstanceState , который восстанавливал ее состояние, а перед завершением работы вызывался метод onSaveInstanceState , который сохранял состояние Actiity. Оба этих метода в качестве параметра принимают объект Bundle , который как раз и хранит состояние activity:

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

Чтобы точнее понять проблему, с которой мы можем столкнуться, рассмотрим пример. Изменим файл activity_main следующим образом:

Здесь определено поле EditText, в которое вводим имя. И также определена кнопка для его сохранения.

Далее для вывода сохраненного имени предназначено поле TextView, а для получения сохраненного имени — вторая кнопка.

Теперь изменим класс MainActivity :

Для хранения имени в программе определена переменная name. При нажатии на первую кнопку сохраняем текст из EditText в переменную name, а при нажатии на вторую кнопку — обратно получаем текст из переменной name в поле TextView.

Запустим приложение введем какое-нибудь имя, сохраним и получим его в TextView:

Читайте также:  Андроид как модем для телевизора

Но если мы перейдем к альбомному режиму, то TextView окажется пустым, несмотря на то, что в него вроде бы уже получили нужное значение:

И даже если мы попробуем заново получить значение из переменной name, то мы увидим, что она обнулилась:

Чтобы избежать подобных ситуаций как раз и следует сохранять и восстанавливать состояние activity. Для этого изменим код MainActivity:

В методе onSaveInstanceState() сохраняем состояние. Для этого вызываем у параметра Bundle метод putString(key, value) , первый параметр которого — ключ, а второй — значение сохраняемых данных. В данном случае мы сохраняем строку, поэтому вызываем метод putString() . Для сохранения объектов других типов данных мы можем вызвать соответствующий метод:

put() : универсальный метод, который добавляет значение типа Object. Соответственно поле получения данное значение необходимо преобразовать к нужному типу

putString() : добавляет объект типа String

putInt() : добавляет значение типа int

putByte() : добавляет значение типа byte

putChar() : добавляет значение типа char

putShort() : добавляет значение типа short

putLong() : добавляет значение типа long

putFloat() : добавляет значение типа float

putDouble() : добавляет значение типа double

putBoolean() : добавляет значение типа boolean

putCharArray() : добавляет массив объектов char

putIntArray() : добавляет массив объектов int

putFloatArray() : добавляет массив объектов float

putSerializable() : добавляет объект интерфейса Serializable

putParcelable() : добавляет объект Parcelable

Каждый такой метод также в качестве первого параметра принимает ключа, а в качестве второго — значение.

В методе onRestoreInstanceState происходит обратный процесс — с помощью метода getString(key) по ключу получаем из сохраненного состояния строку по ключу. Соответственно для получения данных других типов мы можем использовать аналогичные методы:

get() : универсальный метод, который возвращает значение типа Object. Соответственно поле получения данное значение необходимо преобразовать к нужному типу

getString() : возвращает объект типа String

getInt() : возвращает значение типа int

getByte() : возвращает значение типа byte

getChar() : возвращает значение типа char

getShort() : возвращает значение типа short

getLong() : возвращает значение типа long

getFloat() : возвращает значение типа float

getDouble() : возвращает значение типа double

getBoolean() : возвращает значение типа boolean

getCharArray() : возвращает массив объектов char

getIntArray() : возвращает массив объектов int

getFloatArray() : возвращает массив объектов float

getSerializable() : возвращает объект интерфейса Serializable

getParcelable() : возвращает объект Parcelable

Для примера рассмотрим сохранение-получение более сложных данных. Например, объектов определенного класса. Пусть у нас есть класс User :

Класс User реализует интерфейс Serializable , поэтому мы можем сохранить его объекты с помощью метода putSerializable() , а получить с помощью метода getSerializable() .

Пусть у нас будет следующий интерфейс в activity_main.xml :

Здесь определены два поля ввода для имени и возраста соответственно.

В классе MainActivity пропишем логику сохранения и получения данных:

Здесь также сохраняем данные в переменную User, которая предварительно инициализированна некоторыми данными по умолчанию. А при нажатии на кнопку получения получем данные из переменной и передаем их для вывода в текстовое поле.

Источник

Android Studio как вернуться на предыдущую версию

Сегодня обновил студию с версии 3.0 до 3.1
Обновление прошло корректно, но перестали запускаться приложения на внешнем устройстве. Для проверки решил запустить рабочее приложение, с которым не было никаких проблем на версии 3.0
При попытке запуска выдается ошибка IDE и предложение отправить баг разработчикам. Отправил, но хочется работать именно сейчас

Подскажите, как откатить версию назад до 3.0?

Добавлено через 53 минуты
Проверил, формирует ли новая версия студии подписанный пакет. Да, все формирует. Но обнаружилась любопытная вещь. Готовый файл apk меньше файла apk, созданного на версии 3.0 на несколько десятком кбайтов. Но инсталлированное приложение увеличилось в размерах заметно. Было около 13 Мбайт, а созданное на версии 3.1 уже занимает более 20 Мбайт.
Интересно, как это происходит?
Первый пакет создавался через gradle 4.1 второй с 4.4. Ничего в коде не менялось и никакие зависимости не обновлялись

Читайте также:  Как расширить экран android

Java,LibGdx,Android Studio обработка на телефоне события вернуться назад
Мне нужна помощь в обработке события вернуться назад при нажатии на аппаратную кнопку.

Скачать предыдущую версию собственной программы с PlayMarket
Можно ли скачать APK предыдущей версии собственной программы, выложенной в PlayMarket?

(Android studio, java) Ошибка при импорте библиотеки cannot resolve symbol android studio
Вот библиотека https://github.com/mik3y/usb-serial-for-android. Устанавливал так, File -> New ->.

Как добавить версию Android
Здравствуйте, появился такой вопрос, можно ли в проект добавить версию андроид(более старую).

Источник

Что делает работу в Android Studio такой прекрасной? Горячие клавиши, шаблоны, гит и прочее…

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

Итак, Android Studio представляет.

1. Горячие клавиши

Hotkeys — один из самых первых и простых инструментов по увеличению скорости работы с проектом.

Полный перечень горячих клавиш можно найти здесь.

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

Для начала поиск и замена:

SHIFT + SHIFT — поиск по всему, включая классы, файлы, символы и даже команды самой студии.

CTRL + F (Command + F) — поиск в текущем файле (общепринятая комбинация, ну кто этого сочетания не знает? Но если не использовали раньше, запомнить просто F — find).

CTRL + R (Command + R) — замена (запоминаем так же просто R — replace).

Теперь помощь для амнезии частичной:

CTRL + SHIFT + Space — когда вылетело из головы название класса или метода, пишем начальные символы и призываем автодополнение.

CTRL + P (Command + P) — когда не помним параметров метода, тут тоже запомнить просто (P — parameters).

Наконец, переходим к быстрой генерации кода:

CTRL + О — выбираем переопределенный метод для класса (запоминаем О — Override).

CTRL + I — генерируем методы из интерфейсов (запоминаем I — Implement).

CTRL + ALT + T (Command + Option + T) — создаем (а также оборачиваем готовый код в) условные конструкции, циклы, отлов исключений.

CTRL + В (Command + В) — переходим к объявлению метода, класса, интерфейса, переменной и обратно к использованию.

CTRL + / (Command + /) — оформляем линейные комментарии (со слеша комментарии и начинаются, так и запоминаем).

CTRL + SHIFT + / (Command + Shift + /) — для комментариев блочных.

Соблюдаем стиль написания кода и оптимизируем импорты:

CTRL + ALT + L (Command + Option + L) — чтобы наверняка избавиться от лишних (или пропущенных) пробелов, некорректных переносов, неиспользуемых импортов.

Как же эти горячие клавиши запомнить? Говорят, привычка формируется в среднем за 66 дней, примерно на 67 использовании комбинации (4 — 5 день, как это было у меня) вы поймаете себя на том, что делаете это автоматом. А до тех пор оставьте себе рядом с монитором заметки, подсматривайте в поиске по действиям, но большинство горячих клавиш запоминаются моментально, ведь связаны своим обозначением с действием — просто дайте себе это осознать.

Читайте также:  Формат файловой системы андроид

2. Многострочное выделение

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

Горячие клавиши: ALT + J (СTRL + G).

3. Активные шаблоны

Еще один полезный инструмент для быстрой генерации кода. Работает он следующим образом: вводим ключевое слово и нажимаем Tab.

Более полный перечень активных шаблонов можно посмотреть здесь.

Приведу активные шаблоны, которыми активно пользуюсь:

Toast + Tab — на выходе получаем Toast.makeText(, «», Toast.LENGTH_SHORT).show()

newInstance + Tab — создаем new Fragment instance метод с аргументами.

psf + Tab — дает нам public static final можно добавить к шаблону первый символ типа и сгенерировать вместе с ним (к примеру psfi — public static final int )

ifn + Tab — приводит к генерации if (data == null)

Кроме того, можно создать свои собственные активные шаблоны. Подробнее об этом здесь.

4. Постфиксные шаблоны

Еще один инструмент генерации. Здесь принцип действия следующий: Выражение + точка + шаблон + Tab.

Всевозможные постфиксные шаблоны можно посмотреть в самой студии, выбрав File — Settings — Editor — General — Postfix Templates.

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

аrray.fori — for (int i = 0; i

5. Проверяем регулярные выражения

И такая возможность Android Studio предоставлена. Ставим курсор на регулярное выражение, вызываем контекстное меню (CTRL + ENTER) и выбираем пункт CheckRegex. В открывшемся окне вводим пример данных и проверяем результат.

6. Интеграция Git

Все еще управляетесь с репозиторием из консоли? Выберите опцию VCS и посмотрите насколько студия способна облегчить эту работу!

Прекрасная статья о работе с Git через Android Studio. От себя хочу указать то, что особенно дорого в этой работе мне:

Удобное окно коммита, позволяет просмотреть все измененные файлы, отображая код последнего коммита и изменений, к выбранному файлу и выбранной строке можно сразу и перейти. Также просмотреть изменения можно во вкладке Version Control в Local Changes.

В Local Changes можно выбрать и отменить локальные изменения. Используем RollBack.

В Log можно изменить сообщение любого коммита, выбрав в контекстном меню Edit commit message.

Удобный механизм решения конфликтов при слиянии веток. Просто, быстро и наглядно.

Amend commit — выбрав этот чекбокс в окне нового коммита, можно дополнить изменения последнего коммита.

Нужно изменить историю коммитов? Редактировать коммит? Слить коммиты? Используем Rebase.

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

В Local History автоматически сохраняются все совершенные вами изменения (осторожно! время хранения ограничено, как и сам размер хранилище). Вызвав хранилище на пакете, можно вернуть удаленные из него файлы, выбрав команду Revert, этой же командой можно вернуться к любому локальному изменению.

7. Удаляем неиспользуемые ресурсы

Ловить единорога для исполнения этого желания не нужно. Выбираем Refactor — Remove unused resources и получаем подчищенный каталог res, будут удалены все файлы из res, на которые нет ссылок в проекте.

Заключение

Применение этих практик делает работу в Android Studio куда комфортнее)

Источник

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