Topic: Hello Kitty - Создаем первое приложение для Android
Обсуждаем урок Hello Kitty - Создаем первое приложение для Android
Все вопросы проплачены кошками - всемирно известными производителями котят
You are not logged in. Please login or register.
Для регистрации на форуме следует написать мне письмо. В ответе я напишу правильный ответ для прохождения регистрации.
Форум Александра Климова → Android → Hello Kitty - Создаем первое приложение для Android
Обсуждаем урок Hello Kitty - Создаем первое приложение для Android
Добрый день.
Вопрос по кодировке файлов:
после запуска приложения вместо русских символов появились вопросительные знаки. Я поменял кодировку файла MainActivity.java на UTF-8 и проблема была решена.
1. Какую кодировку лучше применять для всех файлов? По умолчанию в Студии установлена кодировка Windows-1252 почему то!!!
2. В эмуляторе не получается вводить с клавиатуры русские символы. Как это побороть?
1.Я в статье написал, что кодировка берется из системных настроек операционки. Нужно в студии найти настройку по кодировке и поменять ее на UTF-8. Или вручную менять по мере необходимости.
2.Не помню, по-моему, я не смог решить эту проблему. Но я давно уже не использую эмулятор.
...Но я давно уже не использую эмулятор.
Рекомендуете сразу на реальном устройстве пробовать? А как на счет дебага?
Одно другому не мешает. Я не призываю отказываться от эмулятора.
Александр, думаю стоит добавить в урок о том, что выбираемое изображение должно быть "определенных" размеров иначе при загрузке приложения будет вылетать OutOfMemory при попытке перекодировать картинку с большим расширением
В примере используется маленькая картинка котика. Но предупредить, наверное, стоит. Я как-то рассчитываю на благоразумие учеников ))
а в целом большое вам спасибо, за сайт и отдельно за то, как преподносите материал.
сам пишу на java и erlang, но уверен, что все выходные проведу копаясь у вас на сайте
Я извиняюсь, но я только изучаю Яву, перехожу с другого языка. Вы используете код
if (mNameEditText.getText().length() == 0) {...
А можно использовать
if (!mNameEditText.getText()) {...
или
if (!mNameEditText) {... ?
Просто последнее выражение как-то привычнее...
upd. Ага, кажется разобрался. Мы объявляем метод private EditText mNameEditText;, который должен содержать аргумент. Значит, правильнее, предпоследнее выражение? Или всё-таки сравнение должно быть полным?
А если бы mNameEditText у нас был бы просто переменной?
Мы же проверяем длину текста. А ваш вариант проверяет доступность самого компонента. А mNameEditText и является переменной.
Значит, и переменные просто так сравнивать нельзя?
Т.е. if(mNameEditText == mFamilyEditText){... будет неверным,
а надо писать if(mNameEditText.getText() == mFamilyEditText.getText()){...?
Просто хочется разобраться. Как, допустим, в JavaScript:
Если мы берем просто переменную а, то мы можем напрямую её сравнивать if(a==5){...,
А если берем некое поле ввода, то у него надо использовать атрибут if(a.value==5){...
Т.е. в JAVA переменные это не сами переменные, а только ссылка на ячейки памяти.
Образно, это не сама квартира, а только её адрес?
Можно, только вы сравниваете объекты. Какой практический смысл в сравнивании двух текстовых полей?
после попытки запуска студия высветила красной лампочкой перед @Override
после нажатия Ремув ( @Override исчезла) и все заработало... Почему??
сорри нашел свою ошибку потом в "вашем коде"))
Александр, спасибо Вам за ваш колоссальный труд.
Я извиняюсь, но я только изучаю Яву, перехожу с другого языка. Вы используете код
if (mNameEditText.getText().length() == 0) {...
А можно использовать
if (!mNameEditText.getText()) {...
или
if (!mNameEditText) {... ?
Просто последнее выражение как-то привычнее...
upd. Ага, кажется разобрался. Мы объявляем метод private EditText mNameEditText;, который должен содержать аргумент. Значит, правильнее, предпоследнее выражение? Или всё-таки сравнение должно быть полным?
А если бы mNameEditText у нас был бы просто переменной?
Форма записи, которую Вы предложили, в Java недопустима. Оператор "if" (в Java) работает только с Boolean выражениями (true и false).
Все настройки как в статье. И версию compile 'com.android.support:appcompat-v7:23.0.1' поставил как в статье.
Но при сборке стандартного проекта куча ошибок. Видимо какая-то несовместимость между версиями апи.
http://i.imgur.com/ntXKbaC.png
А это и логично по сути. com.android.support:appcompat-v7:23.0.1 юзает какие-то штуки, которых нету в том sdk, которое выбрано по умолчанию v15. При этом со стандартным com.android.support:appcompat-v7:15 работать не хочет пишет что не может его найти или что-то такое.
Что это за жесть господа?
Так. Заработало с такими настройками
Версию appcompat ставим такую.
compile 'com.android.support:appcompat-v7:19.0.1'
И убираем multiDexEnabled true
Тогда всё компилируется нормально.
Версию библиотеки надо ставить всегда последнюю. Если ошибки, то проверьте обновления у себя. Возможно, что-то у вас не обновлено.
Насчет multiDexEnabled - это я просто привел случай, когда у меня не запустился пример и я его завел с помощью этого кода. Но использовать его у себя не нужно.
Версию библиотеки надо ставить всегда последнюю. Если ошибки, то проверьте обновления у себя. Возможно, что-то у вас не обновлено.
Понял. Так а что в данном случае стоит обновить?
Я просто использую апи версии 15. Там где минимально Android 4.0 вроде нужен. Эта версия api выбрана по умолчанию при создании нового проекта.
В том то и дело что я выбираю всё по умолчанию (как в статье), а потом если ставлю поледнюю версию этого com.android.support:appcompat то при сборке ошибки приходят. Однако при версии com.android.support:appcompat-v7:19.0.1 - работает нормально.
Если используешь последнюю версию com.android.support:appcompat, то надо использовать тогда и последнюю версию платформы http://developer.android.com/intl/ru/gu … ement.html
Правильно?
Нет. Запускаете SDK Manager и ставите последние версии SDK Platform Tools, Build Tools и т.д. Как правило, они имеют такую же версию, как и библиотеки
Александр, приветствую!
Решил чуть чуть поиграть с вашим уроком. Затеял сделать проверку: если в mNameEditText ввести Bob и нажать на ImageButton в TextView должен отразить иной текст.
Ниже не работающая реализация. Может подскажете реализацию? Спасибо
public void onClick(View view) {
if (mNameEditText.getText().length() == 0) {
mHelloTextView.setText("You need input name to tell kitty hi");
} else if (mNameEditText.getText().equals(BOB)) {
mHelloTextView.setText("How do u do Bob?");
} else {
mHelloTextView.setText("Hi, " + mNameEditText.getText());
}
}
при этом я объявил String BOB = "Bob"
Вполне рабочая реализация. Вам нужно просто разобраться. Если не выводится то, что нужно, то смотрите, а почему выводится именно этот результат.
Добрый день, уперся уже на первом окне.
пишет - Your project location contains non-ASCII characters .
как быть ?? что не так??
Форум Александра Климова → Android → Hello Kitty - Создаем первое приложение для Android
Powered by PunBB, supported by Informer Technologies, Inc.