Сайт для программистов

понедельник, 4 июля 2016 г.

Пробелы в строковых ресурсах

На моём форуме читатель поделился проблемой, с которой я сам не сталкивался. Оказывается, если в строковых ресурсах строка начинается или заканчивается символом пробела, то пробел обрезается. Чем это чревато? Допустим, мы хотим соединить две строки.


<string name="cat">Моему коту </string>
<string name="catAge">5 лет</string>

String firstMessage = getResources().getString(R.string.cat);
String secondMessage = getResources().getString(R.string.catAge);

mTextView.setText(firstMessage + secondMessage);
Несмотря на пробел после слова коту, на экране мы увидим предложение без пробела. Старайтесь избегать таких вариантов с пробелами, как правило такой надобности нет. Пробел всегда можно вставить в коде программно.

// вставляем пробел между двумя словами
mTextView.setText(firstMessage + " " + secondMessage);
Но если по каким-то причинам, вам нужны именно такие строковые ресурсы с пробелами в начале или в конце слов, то самый простой способ - использовать кавычки.

<string name="cat">"Моему коту "</string>
Можно использовать также управляющие символы или код Unicode для символа пробела. Но вряд ли вы их будете держать в голове. Поэтому просто используйте кавычки и будет вам счастье.

пятница, 15 апреля 2016 г.

Error launching Android Studio

После установки Android Studio 2.0 столкнулся с неприятной проблемой. Иногда, запуская студию, получаю диалоговое окно с ошибкой. К сожалению, скриншот не сделал. Но я сделал текстовую копию (Кстати, если вы не знали - в диалоговом окне вы можете нажать клавиши Ctrl+C и получить текст из окна)

---------------------------
Error launching Android Studio
---------------------------
Failed to create JVM: error code -4.
JVM Path: C:\Program Files\Java\jdk1.7.0_45\jre
If you already have a 32-bit JDK installed, define a JAVA_HOME variable in 
Computer > System Properties > System Settings > Environment Variables.
---------------------------
OK   
---------------------------

Если в следующий раз появится такая ошибка, то постараюсь не забыть о скриншоте.
Upd. Сделал скриншот сегодня. Студия запустилась со второго раза.



Проблема появилась на ровном месте. Вчера запускалось, сегодня нет. Если попробовать поискать решение в ваших интернетах, то можно встретить ответы аж за 2010 год для Эклипса. Эти ошибки связаны с тем, что не прописаны пути к файлам Java и даются советы, как это сделать.
Но у меня все давно прописано, вчера работало и я ничего не менял. Перезагрузка студии и самой системы тоже не помогало. 
А потом вдруг на пятый или шестой раз загрузка пошла. Магия!
Впервые такая история произошла вчера. Сегодня тоже самое. На пятый-шестой раз студия загрузилась. Фигня какая-то. Может, это Обама? Кто-то должен ведь ответить за это безобразие.

среда, 2 марта 2016 г.

Нужно ли изучать Kotlin

Те, кто интересуется разработкой под Android, наверняка, в курсе, что вышла версия Kotlin 1.0. Сразу встал вопрос - нужно ли его изучать?
Я почитал несколько статей от разработчиков языка, послушал их выступления на конференциях и решил поделиться своим мнением.
Во-первых, мне нравится название - первые три буквы нового языка намекают на кота. Это плюс. Больше никаких преимуществ не вижу. Это была шутка.
Взлетит или не взлетит новый язык зависит от многих факторов. Но мне представляется следующее. Kotlin разрабатывался не компанией Google, а компанией JetBrains, которая имеет непосредственное отношение к Android Studio. Но одно дело - инструмент разработки, и совсем другое дело - язык программирования. Google и так имеет проблемы с Oracle по поводу Java и постоянно бодается с ним в судах. Поддерживать чужой для них язык им тоже не с руки. Насколько я понял, Google просто наблюдает за развитием ситуации, но никак не комментирует события. Она никак не мешает использовать новый язык, если кому-то нравится.
JetBrains заявила, что переписала часть своих проектов на Kotlin. Мне кажется, это и есть ответ на вопрос. Язык Kotlin вполне может использоваться в корпоративной среде у компаний, которые пишут серьёзные и сложные приложения. Если вы мечтаете работать в JetBrains, то изучение Kotlin вам пригодится.
Если вы экспериментатор, любитель всего нового, а также планируете работать в серьёзных компаниях, то знание Kotlin лишним не будет.
Для обычных разработчиков изучать новый язык смысла не вижу. Не забывайте, что хотя Kotlin является эволюционным ответвлением от Java, его синтаксис и другие вещи очень сильно разнятся. Кода на Java и для Android написано очень много. Если вы только изучаете Android, то всегда есть вероятность, что найдёте ответ на свою проблему на форумах. С Kotlin всё будет значительнее сложнее. 
Решайте сами.

четверг, 11 февраля 2016 г.

Head First. Программирование для Android

После небольшого затишья в книжных магазинах появилась новинка - "Head First. Программирование для Android"


Это первая книга в 2016 о разработке под Android. Хотя на самом деле американское издание вышло в прошлом году. Тем не менее, эта хорошая новость. Вроде это первая книга, где уже полноценно описывается процесс создания приложений в Android Studio, а также рассказываются о новинках - Material Design, RecyclerView, CardView и других полезных вещах.
Отдельно порадовало, что термин Activity перевели как активность. Помните мой пост на эту тему?
На этот раз я не стал покупать себе бумажное издание, а купил электронную версию на сайте издательства "Питер". На самом деле там нет ничего принципиально нового для меня, но хочется поддержать издательство, которое продолжает переводить зарубежных авторов.
Книга содержит хорошие и полезные примеры, которые будут интересны разработчикам, которые хотят повысить свой уровень.
Если вы предпочитаете бумажную версию, то можете заказать на сайте издательства или на Озоне - Head First. Программирование для Android

пятница, 22 января 2016 г.

Как не нужно задавать вопросы

Мне на почту приходят вопросы. Ещё на мой форум приходят вопросы. Иногда я читаю вопросы на других русскоязычных форумах о разработке под Android. И часто наблюдаю ситуацию, когда вопрошающий не может толком сформировать свою мысль. Ему кажется, что он всё обстоятельно объяснил, но на самом деле это не так. Вопрос понятен только ему одному, а для других это выглядит как поток незамутненного сознания. Читаешь такой вопрос и думаешь, а что сказать-то хотел? Вывод - учитесь формировать свои мысли. Иначе ответа не дождётесь. Порой даже не хочется переспрашивать и задавать наводящие вопросы, понимая, что переписка затянется надолго.

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

Третья часть считает меня экстрасенсом. Приходит такое письмо: "Я всё делал по описанию на вашем сайте, а у меня ничего не работает. Почему?" К сожалению, после окончания Хогвартса с отличием, я дал обязательство не использовать полученные знания на территории России и не могу использовать свои волшебные способности для ответа на ваш вопрос. Теперь я буду удалять подобные вопросы с форума, а письма удалять с почтового сервера.

В общем, моё состояние после получения подобных вопросов похоже на одного кота-мема. Обычно, этот мем сопровождается текстом, который начинается со слов: "Честно сказать я ...". Продолжать не буду, гугл вам в помощь.

среда, 4 ноября 2015 г.

Активность или активити?

В рунете термину activity не повезло. На русский язык слово переводится, как "активность", большинство разработчиков под Android игнорируют нормальное русское слово и использует кальку с английского - "активити". Попробуем разобраться.
Начнём с простого. Есть термин Class - повезло, в русском языке есть слово Класс. Менять ничего не будем.
Есть термин Form (например, в Visual Studio) - термин Форм не очень удобен для выговаривания, благо есть похожее слово Форма. Будем говорить по-русски.
Есть тип String - неужели, стринги? о_О
Нет, конечно. Мы этот тип назовём строковым. Строка, она и в Африке строка.
А теперь (барабанная дробь) - Activity. Люди испугались нового термина. Какая ещё активность? Не понятно. А раз непонятно, давайте назовём непонятную фигню непонятным словом, чтобы всех запутать. Может уважать будут, "яжпрограммист".
Откроем страницу документации для android-разработчика https://developers.google.com/android/reference/com/google/android/gms/location/ActivityRecognitionApi, в которой рассказывается об ActivityRecognitionApi. В тексте много раз встречается слово Activity - 31 раз. Если вчитаться в текст, то будет понятно, что речь идёт о физической активности - бег, езда на велосипеде и т.д. Вы можете себе представить фразу в разговоре - физическая активити?  
Как видите, американцы не видят разницы между физической активностью и активностью на экране, называя это всё одним словом. И только у русскоговорящих свой особый путь.
Вот почему на моём сайте вы нигде не увидите этого уродца. Активность и только активность. Я слишком сильно уважаю свой родной русский язык.


Upd. Мне тут оперативно подсказали, что на сайте developer.android.com локализовали часть статей и Activity перевели, вы не поверите, как операция. Операция, Карл!
Подозреваю, что наняли студентов-филологов. Сразу вспоминается фраза - Не читайте советских газет...

пятница, 2 октября 2015 г.

Покой нам только снится

Первая версия статьи Hello World была написана ещё в 2012 году, когда все пользовались устройствами Android 2.3 и средой разработки Eclipse.
Затем статья много раз переписывалась. Менялся внешний вид экранов приложения, шаблоны, код, версии устройств. Приходилось делать новые скриншоты и делать новые пояснения по коду. После пришла очередь Androd Studio - и всё по новой.
Но и студия не стояла на месте. Постоянно в новых версиях появлялись и исчезали различные прибамбасы.
Буквально вчера я запустил новый проект под версией Android Studio 1.4. И опять многое поменялось. Появились новые шаблоны с использованием Material Design. Кстати, простейший шаблон теперь называется Empty Activity и вдобавок из него убрали код для меню.
А в шаблоне с старым названием Blank Activity теперь используется плавающая кнопка Floating Action Button из библиотеки Android Design Support Library.
Вот так и живём. Сегодня очередной раз отредактировал урок Hello World.
В ближайшие дни надо пробежаться по другим статьям и посмотреть, нужно ли что-то там менять. А то новички завалят письмами, почему у них выходит совсем другое.