-
Title:
-
Description:
-
Давайте посмотрим на номер 1.
-
Перед тем как я скажу ответ,
я скопирую этот код
-
и вставлю в Android Studio.
-
Я хочу показать вам какая
ошибка появится.
-
Сейчас, при решении задачи вам
не надо пользоваться Android Studio,
-
вы сможете решить ее,
просто посмотрев на код здесь
-
и записав ответ.
-
Мне все равно - будете вы
использовать Android Studio, или нет.
-
Чтобы код работал,
я создала новый проект
-
и изменила функционал
в главном файле сборок так, чтобы
-
появилось несколько раскладок для
ID с которым мы будем работать.
-
Я не уверена как это
будет выглядеть,
-
я просто хотела поместить их тут
с нужными view ID.
-
Так мой код будет здесь работать.
-
Итак, для первой, я скопировала
код сюда и вижу что есть ошибка.
-
Android Studios говорит что
не может определить метод setText.
-
Если вы помните из прошлого видео,
-
я говорила что setText
это метод TextView.
-
Это значит что вы можете вызвать этот
метод только для объекта ТextView.
-
В этом случае мы вызываем
его для nameTextView.
-
nameTextView определен
как объект-представление,
-
нам нужно изменить это
на объект TextView.
-
Теперь у нас ошибка -
несовместимость типов.
-
Для textview, нужен объект
типа TextView, но
-
вместо этого есть
объект-представление.
-
Это потому что findViewByID
вызывает представление, а
-
с правой стороны требуется TextView.
-
Значит нам надо добавить это в набор
-
представлений вызываемых
findViewById в TextView.
-
Теперь мы можем сохранит все целиком,
-
где nameTextView,
в переменную с левой стороны.
-
Ошибка ушла, и мы можем назначить
текст "Laura" в этом TextView.
-
Ошибка в строке 1, а значит
здесь я написала правильный код.
-
Общее объяснение что нам надо назна-
чить это представление в ТextView
-
и сохранить его внутри
переменной nameTextView.
-
Таким образом при вызове
nameTextView.setText,
-
метода TextView,
в следующей строке кода тут.
-
Перейдем к номеру два.
-
Я скопирую этот код в Android Studio.
-
Вот код, который я скопировала.
-
Первая строка кода верна -
в ней нет ошибок.
-
Но вторая строка
подчеркнута красным и
-
сказано, что есть ошибка
несовместимости типов.
-
Сказано, что необходима string,
но вместо этого есть int.
-
Чтобы лучше это понять,
-
мы должны посмотреть на getMaxLines
метод в документации по TextView.
-
В документации по TextView я поищу
-
метод getMaxLines.
-
Вот он.
-
Параметров для ввода нет и
-
вызываемое значение
этого метода - integer.
-
Вот почему Android studio выдала
ошибку, потому что этот метод
-
выдает число, но
-
мы пытались сохранить его
в строковой переменной.
-
В результате нам надо изменить
этот тип данных переменной на int.
-
Это исправит ошибку.
-
Итак, этот метод возвращает число.
-
И мы можем записать его внутри
этой переменной maxLines.
-
Но предупреждение осталось.
-
В нем сказано, что переменная
maxLines еще не использовалась.
-
Но это лишь часть кода.
-
Я представлю что в приложении мы бы
-
использовали эту переменную позже.
-
Итак, ошибка во второй строке
и вот доделанный код.
-
Решение в том что значение,
возвращаемое этим методом
-
должно быть целочисленным.
-
Перейдем к номеру три.
-
Вот код для номера три.
-
Я скопировала его в Android Studio.
-
Есть сообщение об ошибке
несовместимости типов.
-
Требовалось ImageView,
но вместо него есть view.
-
Это похоже на ошибку что мы
только что видели с TextView.
-
Этот метод работает
с представлением.
-
А с левой стороны мы пытаемся
сохранить его внутри ImageView.
-
Поэтому мы должны назначить этот
объект-представление в ImageView.
-
Это работает ведь на самом деле пред-
ставление с ID icon это ImageView,
-
поэтому его можно
назначить в ImageView.
-
Теперь правая сторона
вычисляет ImageView,
-
и мы можем сохранить это
в переменной с правой стороны.
-
Тип данных у этой переменной -
ImageView, поэтому все совпадает
-
и ошибки больше нет.
-
С другой стороны мы можем
вызвать метод ImageView,
-
SetImageResource,
для этого объекта IconImageView.
-
Осталась одна ошибка - невозможность
определить значение символа logo.
-
Потому что я не добавила в приложение
изображение с названием logo.
-
Если я это добавлю, ошибка уйдет
и наш код здесь будет верным.
-
Вот верный код, где я
поместила это в ImageView.
-
И последний - номер 4.
-
Я скопировала код сюда в Android
Studio и на удивление ошибок нет.
-
Код пытается найти
представление с id title,
-
и полученное представление надо
сохранить в этой переменной TextView.
-
У TextView тип данных View, и это
-
совпадает с правой стороной,
поэтому весь код верен.
-
В следующей строке
мы берем объект - View и
-
запускаем его в методе
setVisibility.
-
Метод берет один исходный
параметр - View.GONE.
-
Я могу проверить документацию
чтобы проверить почему так.
-
В документации для класса
представлений, я ищу
-
метод setVisibility.
-
Я вижу что setVisibility это метод
для класса представлений.
-
Он берет эти исходные, число которое
представляет состояние видимости.
-
Возможные значение видимости это
VISIBLE, INVISIBLE, и GONE.
-
Поскольку setVisibility это метод
для класса представлений,
-
то эта операция работает.
-
Нет необходимости назначать
это в TextView
-
поскольку вызываемый метод -
для класса представлений.
-
Теперь, если мы попытаемся
использовать метод TextView,
-
то надо будет
назначить его в TextView.
-
Поэтому тут не будет
ошибок, поскольку
-
setVisibility метод представлений,
можно оставлять его как такой объект.
-
Это были трудные вопросы.
-
Не страшно, если вы ошиблись.
-
В следующем тесте вы сможете
больше потренироваться на этом.