Let's look at number 1.
Before I reveal the answer,
I'm going to copy this code and
paste it into Android Studio.
I want to show you what kind
of error would come out.
Now when you were solving this quiz,
you didn't need to use Android Studio,
you could have solved it by just
looking at the code here and
then writing in the answer.
So, whether or not you use
Android Studio, it's fine with me.
To make the code work,
I created a new project and
then I modified the activity
main layout file so that it
would have a bunch of views with these
ID's that we're going to be referencing.
I'm not even sure what this
layout would look like, but
I just wanted to put the views in here
with the corresponding view ID names.
That way, my code will work here.
So for number one, I pasted the code
here, and I see that there's an error.
Android Studios says it cannot
resolve the method setText.
If you remember from the last video,
I mentioned that setText
is a TextView method.
That means you can only call
this method on TextView objects.
In this case,
we're calling it on nameTextView.
A nameTextView is declared
to be a view object,
we need to change this
to be a TextView object.
Then we get an error saying
there is incompatible types.
A textview, an object of type
TextView is required, but
instead it found an object of type view.
That's because find view
by ID returns a view, and
this left-hand side requires a TextView.
That means we have to add this to cast
the view returned by
findViewById into a TextView.
Then we can store this whole thing,
which is the nameTextView,
into the left-hand side variable.
Then the error goes away, and we can
set text, "Laura" on this TextView.
The error is on line 1, so
I wrote the correct code right here.
The general explanation is that we need
to cast this view into a TextView and
then store that inside
a nameTextView variable.
That way,
we can call nameTextView.setText,
which is a TextView method,
on the next line of code here.
Let's move on to number two.
I'm going to copy this code and
put it into Android Studio.
Here's the code I pasted in.
The first line of code seems to
be correct, there's no errors.
But the second line has
a red underline and
it says there's
an incompatible types error.
It says, a string is required but
instead it found an int.
To understand this better,
we should look up the method getMaxLines
within the TextView documentation.
In the TextView documentation,
I'm going to search for
the getMaxLines method.
And here it is.
There's no input parameters, and
the return value of this
method is an integer.
So that's why Android studio was
complaining, because this method,
if it's returning an integer, but
we were trying to store it
into a String variable.
As a result, I need to change this data
type of the variable to be an int.
Then the error goes away.
So, the return value of
this method is an integer.
So, we can store it inside
this maxLines variable.
There is a warning still remaining.
Saying that the variable
maxLines is never used.
But this is just a code snippet.
I assume that if this
was in a regular app we
would actually want to
use this variable later.
So, the error's on line two and
here's the updated code.
The general explanation is that
the return value of this method should
be an integer.
Let's move on to number three.
Here's a code for number three.
I copied and pasted the code for
number three in Android Studio.
There's an error message that
says incompatible types.
An ImageView was required,
but instead it found a view.
This is similar to the error
we just saw with the TextView.
This method returns a view.
And, on the left-hand side, we're
trying to store it inside an ImageView.
So we need to cast this view
object into an ImageView.
This is valid because the view with
the ID icon actually is an ImageView,
so it's okay to cast
it into an image view.
Now that the right-hand side
evaluates to an ImageView,
we can store that into the variable
on the left-hand side.
This variable has a data type ImageView
so now everything matches up and
the error is gone.
On the next side,
we can call an ImageView method,
SetImageResource, onto
this IconImageView object.
There is one remaining error saying
that it cannot resolve symbol logo.
That's because I just didn't add
an image in our app with the name logo.
If I added that, then the error would
go away, so our code here is correct.
Here's the correct code where I
cast this view into an ImageView.
Lastly, we have number 4.
I pasted the code here in Android Studio
and surprisingly there's no errors.
The code is trying to find
a view with the id title, and
that should return a view, and that gets
stored in this variable called TextView.
TextView has a data type of View, so
that matches with the right-hand side,
so this whole line of code is correct.
On the next line we're taking
this object, which is a View And
we're calling a setVisibility
method on it.
The method takes in one input
parameter which is View.GONE.
I can check the documentation
to verify why that is.
In the documentation for
the view class, I can search for
the method setVisibility.
I can see that setVisibility is
a method within the view class.
It takes this input, an integer that
represents the visibility state.
The possible visibility values
are VISIBLE, INVISIBLE, and GONE.
Since setVisibility is a method
within the view class,
this is a valid call here.
There's no need to cast
this into a TextView
because the method that we're calling
is a method of the view class.
Now if we were trying to
use a TextView method,
then we would need to
cast it to a TextView.
So for this question,
you should put no error, because
setVisibility is a View method, and
it's okay to leave it as a View object.
These were hard questions.
It's okay if you didn't
get them correct.
In the next test, you'll have
a chance to practice this more.
دعونا ننظر للرقم 1
قبل أن أكشف لكم عن الجواب، سأقوم
بنسخ هذا الكود
و لصقه في "Android Studio"
أريد أن أريك ما نوع الخطأ الذي سيظهر
الآن عندما كنت تقوم بحل الاختبار، لم تكن
بحاجة لاستخدام "Android Studio"
قد تكون حللته فقط بالنظر إلى الكود هنا
و من ثم كتابه الإجابة
إذا، في حال استخدامك "Android Studio"
أو عدمه، لا بأس بالنسبة إلي
لجعل الكود يعمل، قمت بإنشاء
مشروع جديد
و بعد ذلك قمت بتعديل ملف التصميم
Activity_Main
حتى يكون فيه عدد من الـ views التي تملك هذه
المعرّفات (IDs) التي سنشير إليها
لست على ثقة بالشكل الذي سيتخذه
هذا التصميم
لكنني أردت فقط أن أضع الـ views هنا مع
أسماء المعرّفات (IDs) المطابقة لكل منها
بهذه الطريقة، سيعمل الكود الخاص بي هنا
إذاً من أجل الكود الأول، قمت بلصق الكود
هنا، و أرى أن هنالك خطأ
يقول "Android Studio" بأنه لا يستطيع تنفيذ
الطريقة setText
إن كنت تتذكر من الفيديو الماضي
ذكرت أن setText هو طريقة خاصة
بالصف TextView
مما يعني أنك تستطيع استدعاء هذه الطريقة
فقط مع أغراض من الصف TextView
في هذه الحالة، نحن نستدعيها مع
الغرض nameTextView
و قد تم التصريح عن nameTextView
كغرض من الصف View
نحن بحاجة إلى تغيير هذا الغرض إلى
غرض من الصف TextView
ثم نحصل على خطأ يخبرنا بوجود أنماط متضاربة
و المطلوب هو TextView غرض من
النمط TextView
لكن بدلاً من ذلك تم العثور على غرض من
النمط View
ذلك لأن الطريقة findViewById تعيد غرض
من النمط View
و هذا الجانب الأيسر يتطلب غرض
من النمط TextView
هذا يعني أنه علينا إضافة هذا حتى نقوم
بقصر ال view المعاد من
الطريقة findViewById إلى متحول
من النمط TextView
يمكننا بعدها تخزين هذا الشيء كاملاً
والذي هو nameTextView فيالمتحول
الموجود في الجانب الأيسر
عندها يختفي الخطأ، و يصبح بإمكاننا أن نضع
هذا النص "Laura" في هذا الـ TextView
الخطأ موجود في السطر الأول ، لذا قمت
الكود الصحيح ها هنا
التفسير العام هو أننا بحاجة لقصر هذا
الـ View إلى TextView
ثم تخزين هذه القيمة داخل المتحول
nameTextView
بهذه الطريقة يمكنننا
استدعاء nameTextView.setText
والتي هي طريقة من الصف TextView
على السطر التالي من الكود هنا
دعونا ننتقل إلى الكود رقم 2
سأقوم بنسخ الكود و وضعه في "Android Studio"
وها هو الكود الذي ألصقته
يبدو السطر الأول من الكود صحيحاً
ليست هناك أية أخطاء
ولكن السطر الثاني يحوي تسطيراً
باللون الأحمر
يقول الخطأ أن هناك أنماطاً متضاربة
كما و يقول أن تم العثور على int
بدلاً من String
لفهم هذا بشكل أفضل
ينبغي لنا أن نبحث عن الطريقة getMaxLines
ضمن وثائق TextView
في وثائق TextView
سأقوم بالبحث عن
الطريقة getMaxLines
وها هي ذا
ليس لها أية وسائط دخل
و القيمة المعادة من هذه الطريقة هي من
النمط الصحيح
ولهذا السبب كان "Android Studio" يتذمر
لأن هذه الطريقة
كانت تعيد قيمة من int
و نحن كنا نحاول تخزينها في
متحول من String
ونتيجة لذلك، أنا بحاجة لتغيير نمط البيانات
الخاص بالمتحول ليصبح من النمط int
ثم يختفي الخطأ
إذاً، القيمة المعادة من هذه الطريقة
هي من النمط الصحيح
بحيث يمكننا أن نخزنها
في المتحول maxLines
مازال هناك تحذير
يقول إن المتحول maxLines لم يتم
استخدامه قط
ولكن هذا الكود هو مجرد قصاصة
أفترض أنه إذا كان
هذا تطبيقاً نظامياً
فإننا حقيقةً سنرغب في استخدام هذا
المتحول لاحقاً
إذاً، الخطأ موجود في السطر الثاني وها
هو الكود المصحح
التفسير العام هو أن القيمة المعادة من هذه
الطريقة كان يجب أن
تكون من int
دعونا ننتقل إلى الكود رقم 3
وها هو الكود رقم ثلاثة
قمت بنسخ الكود الموجود في السؤال
الثالث و لصقه في "Android Studio"
هناك رسالة خطأ تخبرنا
بوجود أنماط متناقضة
تم العثور على متحول من النمط view في حين
أن المطلوب هو متحول من النمط ImageView
هذا مماثل للخطأ الذي رأيناه للتو مع
المتحول من النمط Textview
تعيد هذه الطريقة متحولاً من النمط View
كنا نحاول تخزينه في متحول من النمط
ImageView في الجانب الأيسر
لذا نحن بحاجة لقصر هذا الغرض من النمط View
إلى غرض من النمط ImageView
هذا الكود صحيح لأن الغرض View مع
ID icon هو غرض من ImageView
لذا لا بأس بقصره إلى
النمط ImageView
الآن يتم تقويم الجانب
الأيمن إلى ImageView
يمكننا تخزين ذلك في المتحول الموجود
على الجانب الأيسر
نمط البيانات لهذا التمحول هو ImageView
الآن كل شيء متطابق
و قد اختفى الخطأ
في السطر التالي، يمكننا استدعاء طريقة
من النمط ImageView
و هي الطريقة setImageResource
لهذا الغرض IconImageView
بقي خطأ واحد يخبرنا أن الطريقة لا تستطيع
تحليل الرمز logo
هذا لأنني فقط لم أقم بإضافة صورة تحمل
الاسم logo إلى تطبيقنا
إن أضفت ذلك، سيزول الخطأ، إذاً الكود
الذي لدينا هنا صحيح
وها هو الكود الصحيح حيث أجريت عملية
قصر على متحول من ImageView
وأخيراً، لدينا الكود رقم 4
قمت بلصق الكود هنا في "Android Studio"
و بشكل مفاجىء، لا توجد أخطاء
يحاول الكود العثور على view يحمل
الـ id الذي يساوي title
و الذي يجب أن يعيد View، و يتم تخرين هذا
الأخير في متحول من النمط TextView
للـTextView نمط بيانات
وهو عبارة عن View
وهذا يتطابق مع الجانب الأيمن، إذاً هذا
السطر من الكود كله صحيح
في السطر التالي نقوم بأخذ هذا الغرض
و الذي هوغرض من النمط View
سنقوم باستدعاء الطريقة setVisibility
لنطبقها عليه
تأخذ الطريقة وسيط دخل
واحد وهو View.GONE
يمكنني التحقق من الوثائق
حتى أؤكد هذا
في وثائق الصف View
يمكنني البحث عن
الطريقة setVisibility
أستطيع أن أرى أن الطريقة setVisibility
هي من طرق الصف View
و ستتطلب للدخل قيمة من int
تمثل حالة الرؤية
قيم الرؤية المتاحة هي VISIBLE و INVISIBLE
و GONE
بما أن الطريقة setVisibility هي طريقة
من الصف View
فهذا هنا استدعاء صحيح
ليس هناك حاجة لقصر هذا
المتحول إلى TextView
لأن الطريقة التي نقوم باستدعائها هي
طريقة من الصف View
الآن إن كنا نحاول استخدام طريقة
من الصف TextView
فسنكون بحاجة إلى قسر
المتحول إلى TextView
إذاً يجب أن تضع "no error"
كإجابة على هذا السؤال
لأن الطريقة setVisibility هي طريقة من View
و لا بأس إن أبقيناه غرضاً من View
كانت هذه الأسئلة صعبة
لا بأس إن لم تجب عليها بشكل صحيح
في الاختبار التالي، ستكون لديك فرصة
التدرب على هذا أكثر
Veamos el número 1.
Antes de revelar la respuesta,
voy a copiar este código
y pegarlo en Android Studio.
Quiero mostrarle
qué tipo de error resultaría.
Para resolver este test,
no era necesario usar Android Studio,
se podría haber resuelto
con solo mirar este código
y luego escribir la respuesta.
Por lo tanto, no importa
si se utiliza o no Android Studio.
Para hacer funcionar el código,
creé un nuevo proyecto
y luego modifiqué el principal archivo
de diseño de la actividad
para que tuviera muchas visualizaciones
con las ID a las que haremos referencia.
No estoy segura de qué aspecto
tendría este diseño,
pero quería poner aquí las visualizaciones
con sus nombres de visualizar ID.
De ese modo, mi código funcionará aquí.
Para el número 1, pegué el código aquí,
y veo que hay un error.
Android Studios dice
que no puede resolver el método setText.
Si recuerdan el último vídeo,
mencioné que setText
es un método TextView.
Eso significa que este método
solo se puede aplicar a objetos TextView.
En este caso,
lo aplicamos a nameTextView.
Un nameTextView está clasificado
como un objeto de visualización.
Tenemos que cambiar esto
para que sea un objeto TextView.
Entonces nos da un error
que dice que hay tipos incompatibles.
Un TextView, se necesita un objeto
de tipo TextView,
pero en cambio, encontró un objeto
de tipo visualización.
Eso es porque buscar visualización por ID
nos devuelve una visualización,
y esta parte de la izquierda
requiere TextView.
Eso significa que tenemos que añadir esto
para convertir la visualización
de findViewById en un TextView.
Entonces podemos guardar todo esto,
que es el nameTextView,
en la variable del lado izquierdo.
Entonces desaparece el error y ponemos
el texto, "Laura" en este TextView.
El error está en la línea 1,
así que escribí el código correcto aquí.
La explicación general es que debemos
convertir esta visualización en TextView
y luego guardarlo
en una variable nameTextView.
De ese modo, podemos llamarlo
nameTextView.setText,
que es un método TextView,
en la siguiente línea de código.
Pasemos al número 2.
Voy a copiar este código
y ponerlo en Android Studio.
Este es el código que pegué.
La primera línea de código
parece correcta, no hay ningún error.
Pero la segunda línea
tiene un subrayado rojo
y dice que hay un error
de tipos incompatibles.
Dice, se requiere una secuencia
pero en cambio encontró un entero.
Para entenderlo mejor,
debemos buscar el método getMaxLines
en la documentación TextView.
En la documentación TextView,
buscaré el método getMaxLines.
Y aquí está.
No hay parámetros de entrada
y el valor de retorno
de este método es un entero.
Así que por eso Android Studio se quejaba,
porque este método nos da un entero,
pero estábamos intentando guardarlo
en una variable de secuencias.
Por tanto, debo cambiar el tipo de datos
de la variable para que sea un entero
y el error desaparece.
Por lo tanto, el valor de retorno
de este método es un entero.
Podemos guardarlo
en esta variable maxLines.
Todavía queda una advertencia.
Dice que la variable maxLines
nunca se utiliza.
Pero es solo un fragmento de código.
Supongo que si esto fuera
una aplicación normal
querríamos utilizar esta variable
más adelante.
El error está en la línea dos
y este es el código actualizado.
La explicación general es
que el valor de retorno de este método
debería ser un entero.
Pasemos al número 3.
Aquí hay un código para el número 3.
He copiado y pegado el código
para el número 3 en Android Studio.
Hay un mensaje de error que dice
"tipos incompatibles".
Se necesita una ImageView,
pero en cambio encontró una visualización.
Esto es parecido al error
que acabamos de ver con el TextView.
Este método nos da una visualización.
Y, a la izquierda, estamos intentando
guardarlo en un ImageView.
Tenemos que convertir este objeto
de visualización en un ImageView.
Es válido porque la visualización
con icono ID en realidad es un ImageView,
por lo que se puede convertir
en visualización de imagen.
Ahora que el lado derecho
equivale a un ImageView,
podemos guardarlo en la variable
del lado izquierdo.
El tipo de datos de esta variable
es ImageView,
por lo que ahora todo coincide,
y desaparece el error.
En la siguiente línea,
podemos aplicar un método ImageView,
SetImageResource,
a este objeto IconImageView.
Aún queda un error que dice que
no puede resolver el "logo" del símbolo.
Eso es porque no agregué una imagen
a la aplicación con el logo del nombre.
Si la agrego, el error desaparece,
así que nuestro código es correcto.
Este es el código correcto para convertir
esta visualización en un ImageView.
Por último, tenemos el número 4.
Pegué el código aquí en Android Studio
y, sorprendentemente, no hay errores.
El código está buscanco
una visualización con el ID "title"
y eso debería darnos una visualización,
que se guarda en esta variable TextView.
TextView tiene un tipo de datos
de visualización,
así que coincide con el lado derecho,
y toda esta línea de código es correcta.
En la siguiente línea tomamos este objeto,
que es una visualización
y aplicamos un método setVisibility.
El método toma un parámetro de entrada
que es View.GONE.
Puedo comprobar la documentación
para verificar por qué es así.
En la documentación
de la clase Visualizacion,
puedo buscar el método setVisibility.
Podemos ver que setVisibility
es un método en la clase Visualización.
Toma esta entrada, un entero,
que representa el estado de visibilidad.
Los posibles valores de visibilidad
son VISIBLE, INVISIBLE y GONE.
Dado que setVisibility
es un método de la clase Visualización,
es válido aplicarlo en este caso.
No es necesario convertir
esto en TextView,
porque el método que estamos aplicando
es un método de clase Visualización.
Si estuviéramos intentando
utilizar un método TextView,
tendríamos que convertirlo en TextView.
Entonces, para esta pregunta,
deben poner "ningún error",
porque setVisibility
es un método Visualización,
y se puede dejar
como objeto de Visualización.
Eran preguntas difíciles.
No pasa nada
si no respondió correctamente.
En el siguiente test,
podrá seguir practicando.
Regardons le numéro 1.
Avant de révéler la réponse,
je vais copier ce code et
le coller dans Android Studio.
Je veux vous montrer quelle
genre d'erreur sortirait.
Pour résoudre ce quizz, vous n'aviez
pas besoin d'utiliser les appli en studio,
Vous pourriez l'avoir résolu simplement en
regardant le code ici et
écrire alors dans la réponse.
Alors, que vous utilisiez ou non
Android studio, il est très bien avec moi.
Pour faire fonctionner le code,
Je créé un nouveau projet et
Puis je l'ai modifié le fichier
mainactivity layout afin qu'il
ai un tas de vues avec ces identifiants
que nous allons référencer.
Je ne sais pas à quoi ce layout
ressemblerait, mais
Je voulais juste mettre les vues ici
avec les noms vue correspondantes.
De cette façon, mon
code va marcher ici.
Donc pour le numéro un, je colle le code
ici, et je vois qu'il y a une erreur.
Android Studios dit qu'il ne peut pas
résoudre la méthode setText.
Si vous vous souvenez
de la dernière vidéo,
J'ai mentionné que setText
est une méthode de TextView.
Vous pouvez appeler uniquement
cette méthode sur des objets TextView.
Dans ce cas, nous demandons
sur nameTextView.
Un nameTextView est déclarée
d'être un objet de vue,
Nous devons changer cette
être un objet TextView.
Ensuite, nous obtenons une erreur disant
il ya des types incompatibles.
Un textview, un objet de type
TextView est nécessaire, mais
Place il a trouvé un objet de type de vue.
C'est parce qu'on trouve une vue
par ID et ça retourne une vue, et
Ce côté gauche nécessite une TextView.
Cela signifie que nous
devons ajouter ça dans
la vue retournée par
findViewById dans une TextView.
Ensuite, nous pouvons
stocker toute cette affaire,
qui est le nameTextView,
dans la variable de gauche.
L''erreur disparaît, et on peut définir
le texte, "Laura" sur cette TextView.
L'erreur est sur la ligne 1, de sorte
que j'ai écrit le code correct ici.
L'explication est que nous devons
jeter ce point de vue dans une TextView et
stocker alors que l'intérieur
une variable nameTextView.
De cette façon, nous pouvons l'appeler
nameTextView.setText,
Qui est une méthode TextView,
sur la ligne de code suivante ici.
Passons au numéro deux.
Je vais copier ce code et le mettre
dans Android Studio.
Voici le code que j'ai collé.
La première ligne de code semble
être correcte, il n'y a pas d'erreurs.
Mais la deuxième ligne a
un soulignement en rouge et
il dit qu'il y a une erreur de
types incompatibles.
Il dit, une chaîne est nécessaire,
mais il a trouvé à la place un int.
Pour mieux comprendre cela,
Nous devrions rechercher la méthode
getMaxLines dans la doc de TextView.
Dans la documentation de TextView,
Je vais chercher
La méthode getMaxLines.
Et c'est ici.
Il n'y a pas de paramètres d'entrée, et
La valeur de retour de cette méthode de
est un entier.
Voilà pourquoi l'atelier Android
se plaignait, parce que cette méthode,
car elle retourne un entier, mais
nous essayions de le stocker
dans une variable String.
Je dois changer ce type de variable de
de données pour être un int.
Puis l'erreur disparaît.
Ainsi, la valeur de retour de
cette méthode est un entier.
Donc, nous pouvons stocker à l'intérieur
cette variable maxLines.
Il y a un avertissement restant.
Qui dit que les variables
maxlines ne sont jamais utilisées.
Mais ceci est juste un extrait de code.
Je suppose que si c'était
dans une application normale nous
voudrions réellement
utiliser cette variable plus tard.
Donc, l'erreur est sur la ligne deux et
voici le code mis à jour.
L'explication est que la valeur de
retour de cette méthode devrait
être un nombre entier.
Passons au numéro trois.
Voici un code pour le numéro trois.
Je copie et colle le code pourle
numéro trois dans Android Studio.
Il y a un message d'erreur qui dit
types incompatibles.
Un ImageView était nécessaire,
mais au lieu de ça il a trouvé une vue.
Ceci est similaire à l'erreur que
nous venons de voir avec le TextView.
Cette méthode retourne une vue.
Et, sur le côté gauche, nous essayons
de le stocker dans un ImageView.
Nous avons donc besoin de jeter
ce point de vue objet dans un ImageView.
C'est valable car la vue avec l'icône
d'identification est en fait un ImageView,
Il est si bon de jeter ça
dans une vue de l'image.
Maintenant que le côté droit
évalue un ImageView,
Nous pouvons stocker la variable que
sur le côté gauche.
Cette variable a une ImageView de type
de données, tout correspond et
l'erreur a disparu.
De ce côté, nous pouvons appeler
une méthode d'ImageView,
SetImageResource, sur
cet objet IconImageView.
Il y a une erreur restante disant
qu'il ne peut pas résoudre symbole logo.
car je n'ai pas ajouté une image dans
notre application avec le nom logo.
Si j'avais ajouté ça alors
notre code serait correct.
Voici le code correct où j'ai noté
ce point de vue dans un ImageView.
Enfin, nous avons numéro 4.
Je collé le code ici dans Android studio
et étonnamment il n'y a pas d'erreurs.
Le code essaie de trouver
une vue avec le titre de id, et
devrait renvoyer une vue, et qui est
stockée dans cette variable TextView.
TextView a un type de
vue de données, de sorte
que ça correspond au côté droit, donc
toute cette ligne de code est correct.
Sur la ligne suivante, nous prenons
cet objet, qui est une vue et
nous appelons une méthode de setVisibility
sur elle.
La méthode prend en entrée
un paramètre qui est View.GONE.
Je peux vérifier la documentation
afin de vérifier pourquoi.
Dans la documentation de la classe
de vue, je peux chercher
le procédé setVisibility.
Je peux voir que setVisibility est une
méthode au sein de la classe d'affichage.
Il prend cette entrée, un entier qui
représente l'état de visibilité.
Les valeurs de visibilité possibles
sont VISIBLE, INVISIBLE, and GONE.
Car setVisibility est une méthode
sein de la classe vue,
Ceci est un appel valide ici.
Il n'y a pas besoin de marquer
cela dans un TextView
Parce que la méthode que nous appelons
est une méthode de la classe de vue.
Maintenant, si nous essayions de
utiliser une méthode de TextView,
Alors nous aurions besoin de
jeter à un TextView.
Donc, pour cette question,
vous devriez mettre aucune erreur, car
SetVisibility est une méthode d'affichage,
il faut le laisser comme un objet View.
Ce sont des questions difficiles.
C'est pas grave si vous ne
les avez pas eu bonnes.
Dans le prochain test, vous aurez
une chance de pratiquer ça plus.
Mari perhatikan nomor 1.
Sebelum saya berikan jawabannya,
saya akan salin kode ini,
dan menempelnya ke dalam Android Studio.
Saya ingin tunjukkan pada Anda
kesalahan yang dapat muncul.
Saat Anda menjawab kuis ini, Anda
tidak perlu menggunakan Android Studio,
Anda bisa menjawabnya hanya
dari melihat kode ini
lalu menuliskan jawabannya.
Jadi, apakah menggunakan atau tidak
menggunakan Android Studio, bukan masalah.
Agar kode bekerja,
saya membuat projek baru
kemudian memodifikasi berkas
activity_main layout, sehingga
akan memiliki banyak View dengan
ID yang kita akan referensi ini.
Saya bahkan tak yakin
nantinya seperti apa
Saya hanya ingin menempatkan View di sini
dengan nama ID yang sesuai.
Dengan seperti itu,
kode saya akan bekerja di sini.
Untuk nomor satu, saya tempel kode
di sini, dan bisa dilihat ada kesalahan.
Android Studios mengatakan kalau dia
tidak bisa memecahkan method setText.
Jika Anda ingat
video sebelumnya,
Saya menyebutkan bahwa setText
merupakan metode TextView.
Yang berarti, Anda hanya dapat memanggil
metode ini pada objek TextView.
Dalam hal ini,
kita memanggilnya pada nameTextView.
nameTextView dinyatakan
untuk menjadi objek View,
kita harus mengubahnya menjadi
objek TextView.
Lalu, ada kesalahan yang menyebutkan
terdapat tipe yang tidak kompatibel.
Textview, objek dari tipe
TextView yang dibutuhkan, tapi
sebaliknya, dia malah menemukan
objek dari type view.
Hal itu karena, findViewById mengembalikan
sebuah view, dan
sebelah kiri sebenarnya membutuhkan
sebuah TextView.
Yang berarti, kita harus menambahkan ini
untuk melempar
view yang dikembalikan oleh
findViewById ke dalam TextView.
Kemudian, kita bisa menyimpan semua ini,
yaitu nameTextView,
ke variabel sebelah kiri.
Kesalahan sudah tidak ada, dan kita atur
setText "Laura" dalam TextView ini.
Kesalahan ada pada baris 1, jadi
saya tulis kode yang benar di sini.
Penjelasan umumnya adalah bahwa kita perlu
melempar view ini ke dalam TextView dan
kemudian menyimpannya
di dalam variabel nameTextView.
Dengan seperti itu,
kita dapat memanggil nameTextView.setText,
yang merupakan metode TextView,
pada baris lain dari kode ini.
Lanjut ke nomor dua. Saya akan salin
kode ini dan menaruh di Android Studio.
Inilah kode yang saya tempel.
Baris pertama kelihatannya benar,
tidak ada kesalahan terlihat.
Tapi terdapat garis merah
pada baris kedua dan
dikatakan kalau ada kesalahan
tipe yang tidak kompatibel.
Dikatakan bahwa string yang diperlukan
tapi sebaliknya malah int yang ditemukan.
Untuk memahami lebih baik,
kita harus melihat metod getMaxLines
yang ada di dalam dokuementasi TextView.
Di dalam dokumentasi TextView,
saya akan mencari
metode getMaxLines.
Dan ini dia.
Tidak ada input parameter, dan
nilai kembaliannya adalah
sebuah integer
Itulah mengapa Android studio mengeluh,
karena metode ini,
dia mengembalikan integer, tapi
kita mencoba menyimpannya
ke dalam variabel String.
Sebagai hasilnya, saya perlu mengubah
tipe data variabel menjadi int.
Lalu, kesalahan ini akan menghilang.
Nilai kembalian metode ini
adalah integer.
Jadi, kita bisa menyimpannya
ke dalam variabel maxLines.
Masih ada peringatan yang tersisa.
Mengatakan kalau variabel
maxLines tidak pernah digunakan.
Tapi ini hanyalah potongan kode.
Saya berasumsi jika ini
berada dalam aplikasi biasa
kita pasti ingin menggunakan
variabel ini nanti.
Jadi, kesalahan pada baris kedua dan
inilah kode yang sudah diperbarui.
Penjelasan umumnya adalah nilai kembalian
dari metode ini harusnya
sebuah integer.
Lanjut ke nomor tiga.
Inilah kode untuk nomor tiga.
Saya salin dan tempel kode untuk
nomor tiga di Android Studio.
Kesalahan menyebutkan kalau
terdapat tipe yang tidak kompatibel.
Yang dibutuhkan adalah ImageView,
tapi sebaliknya View yang ditemukan.
Kesalahan ini mirip dengan
yang ada dalam TextView.
Metode ini mengembalikan view.
Dan, pada sisi kiri, kita mencoba
menyimpannya di dalam ImageView.
Jadi, kita perlu melempar view ini
ke dalam ImageView.
Hal ini berlaku karena view dengan
id.icon sebenarnya adalah ImageView,
sehingga tak apa untuk melemparnya
ke dalam ImageView.
Sekarang, sebelah kanan
mengevaluasi ke ImageView,
kita bisa menyimpannya ke dalam
variabel di sebelah kiri.
Variabel ini memiliki tipe data ImageView
jadi sekarang semuanya cocok dan
kesalahan sudah menghilang.
Di sebelahnya, kita bisa
memanggil ImageView method,
SetImageResource, ke dalam
objek IconImageView ini.
Satu kesalahan tersisa yang menyebutkan
kalau tidak bisa memecahkan simbol logo.
Itu karena saya tidak menambahkan gambar
ke dalam aplikasi dengan nama logo.
Jika saya menambahkannya, kesalahan itu
menghilang, sehingga kode menjadi benar.
Inilah kode yang benar dimana
saya melepar view ke dalam ImageView.
Terakhir, nomor 4.
Saya tempel kode di Android Studio dan
mengejutkannya tidak ada kesalahan lagi.
Kodenya mencoba mencari view
dengan id.title
itu seharusnya bisa mengembalikan view,
dan tersimpan ke dalam variabel TextView.
TextView memiliki tipe data dari View,
sehingga
itu sesuai dengan sebelah kanan,
jadi seluruh baris kode ini benar.
Pada baris selanjutnya kita ambil
kode ini, yang merupakan View
dan kita memanggil metode
setVisibility padanya.
Metode ini mengambil satu
parameter input yaitu View.GONE.
Saya akan cek dokumentasi
untuk membuktikan mengapa itu.
Di dalam dokumentasi kelas View,
saya bisa mencari
metode setVisibility.
Bisa dilihat kalau setVisibility adalah
sebuah metode di dalam kelas view.
Dibutuhkan input ini, integer yang
mewakili keadaan visibility.
Kemungkinan nilai visibility adalah
VISIBLE, INVISIBLE, dan GONE.
Karena setVisibility adalah
metode di dalam kelas view,
ini adalah panggilan yang sah di sini.
Tidak perlu lagi melemparnya
ke dalam TextView
karena metode yang kita panggil
adalah metode dari kelas view.
Sekarang, jika kita mencoba untuk
menggunakan metode TextView,
maka kita perlu melemparnya
ke dalam TextView.
Jadi, untuk pertanyaan ini
jangan ada kesalahan, karena
setVisibility adalah metode View, dan tak
apa meninggalkannya sebagai objek View.
Ini semua adalah pertanyaan sulit.
Tak apa jika
salah menjawabnya.
Dalam tes berikutnya, Anda punya
kesempatan untuk berlatih lagi.
1番目を見てみましょう。
回答を言う前に、このコードをコピーして、
Android Studioにペイストします。
どんなエラーが発生するかを見てみます。
この問題を解くにおいて、Android Studioを使う必要はありません。
このコードを見て回答しても
いいです。
Android Studioを使うか使わないかは任意です。
このコードを実行するために、
新しいプロジェクトを作って、
acttivity.mainレイアウトファイルを変更して、
これから使うIDを持つビューを入れてみたいと思います。
このレイアウトがどのようになるかは分かりませんが、
ビューIDに該当するビューを加えられれば
大丈夫です。
そうすれば、このコードを使うことができます。
1番目では、このコードをペイストして、
エラーが発生したようです。
ANdroidStudioが、setTextw認知できないとなっています。
前のビデオで、
setTextはTextViewメソッドだといいました。
つまり、このメソッドは、TextViewオブジェクトでしか
使えないということです。
ここでは、nameTextViewで使っています。
nameTextViewはビューオブジェクトとして宣言されているので、
それをTextViewオブジェクトに変えなければいけません。
次に、タイプが合わないというエラーです。
ここでは、TextViewタイプのオブジェクトであるtextviewが
必要ですが、
ビュータイプのオブジェクトがあります。
それは、findViewByIdはビューを出力するのに対して、
左側はTextViewを必要としているからです。
なので、このfindViewByIdが出力したビューを
TextViewにするために、
これを加えなければいけません。
このnameTextView全てを左側の変数に
記録します。
エラーが消えましたね。このTextViewに「Laura」と
設定します。
1行目にエラーがありますね。ここに正しいコードを書きました。
ここでは、ビューをTextViewにするという回答でした。
そうすれば、nameTextViewに記録することができます。
そうすることによって、次の行で、TextViewメソッドの
TextView.setTextを使うことができます。
2番目に行きましょう。
これをコピーして、Android Studioにペイストします。
これがペイストしたコードです。
エラーがないので、1行目は正しいようです。
しかし2行目には赤線があり、
icompatible type error とあります。
文字列が必要だが、整数を見つけたとなっています。
これを理解するために、
TextViewのドキュメンテーションにある、
getMaxLinesメソッドを見てみましょう。
TextViewのドキュメンテーションで、getMaxLinesメソッドを
検索します。
ここにありました。
インプットはなく、
出力は整数になっています。
この整数の出力がAndroid Studioのエラーに
つながっています。
整数を文字列に記録しようとしているからです。
この変数のタイプを整数に変えなければいけません。
これでエラーが解消されました。
この戻り値は整数です。
なのでこのmaxLinesという変数に記録することができます。
まだ警告が残っています。
maxLinesという変数は使われていないとのことです。
しかしこれは、コードの一部なので、
実際のアプリのコードでは、
これを使うと思います。
エラーは二行目で、これが回答です。
このメソッドの戻り値は整数でなければ
いけないという回答でした。
3番目に行きましょう。
これが3番目のコードです。
Android Studioにペイストしました。
incompatibe typesというエラーが出ています。
ImageViewが必要だが、viewを見つけたとあります。
これは今見たTextViewのエラーと似ています。
このメソッドはviewを返します。
しかし左側ではImageViewとなっています。
なので、このviewオブジェクトをImageViewに
しなければいけません。
iconというIDを持ったviewは実際にImageViewなので、
この動作ができます。
ImageViewにすることができます。
これで右側がImageViewとして評価されるので、
左側の変数に記録することができます。
この変数のタイプはImageViewなので、
マッチしますね。
エラーが消えました。
次に、SetImageResourceというImageViewのメソッドを
このIconImageViewオブジェクトで呼ぶことができます。
もう一つ、logoが認知できないというエラーがあります。
これは、アプリで、logoという名前を加えなかったからです。
それを加えれば、エラーは消えます。
これが、viewをImageViewにする回答コードです。
4番目に行きましょう。
Android Studioにコードをペイストしましたが、
エラーがありません。
このコードは、titleというIDをもったビューを探しています。
これは、ビューを出力するもので、
TextViewという変数に記録されます。
TextViewのタイプははビューなので、
右側と合います。なので、このコードは正しいものです。
次の行で、ビューであるこのオブジェクトを使って、
setVisibilityというメソッドを呼んでいます。
View.GONEというパラメータを受け取ります。
ドキュメンテーションをいて確認してみましょう。
ビュークラスのドキュメンテーションで、
setVisibilityメソッドを検索してみます。
setVisibilityはvビュークラスの中のメソッドだということが
分かります。
視界を表す整数をインプットとして受け取り、
視界の選択肢は、VISIBE,INVISIBLE,そしてGONEとなっています。
setVisibilityはビュークラスの中のメソッドなので、
これは妥当です。
これをTextViewにする必要もありません。
このメソッドはビュークラスのメソッドだからです。
TextViewのメソッドを使う場合には、
TextViewにしなければいけません。
この問題では、エラーなしという回答になります。
setVisibilityはビューのメソッドなので、
このままビューオブジェクトで構いません。
難しい問題でしたね。
すべて正解できなくても大丈夫です。
次のエクササイズでは、これについてさらに
練習していきます。
1번을 살펴봅시다.
스튜디오에 붙여 넣을 것입니다.
어떠한 종류의 오류가 나오는지를
보여드릴 것입니다.
이 문제를 해결하고자 할 때, 안드로이드
스튜디오를 사용할 필요는 없습니다.
단지 이곳의 코드 확인을 통해서
해결이 가능합니다.
그리고 답을 적으시면 됩니다.
안드로이드 스튜디오의 사용은 아무
관련이 없습니다.
코드가 작동하도록 하기 위해,
새로운 프로젝트를 만들고
[activity]
[main layout]을 변경하였습니다.
따라서 우리가 참조하고자 하는 이들
ID들을 가진 많은 뷰를 갖게 됩니다.
이 레이아웃이 어떻게 될지는 잘
모르겠습니다. 하지만
해당 뷰 ID 명칭들과 함께 뷰들을
이곳에 두고자 합니다.
이 같은 방식으로 나의 코드는
실행될 것입니다.
1번에 대해, 코드를 이곳에 붙여
넣고 오류를 살펴보았습니다.
안드로이드 스튜디오는 [method]
[setText]를 해결할 수 없음을 나타냅니다.
[setText]가
[TextView] [method]임을 언급한
지난 영상을 기억하십니까?
이는 [TextView] 객체에 이 [method]만을
호출할 수 있다는 것을 의미합니다.
이 같은 경우,
이것을 [nameTextView]에 호출합니다.
[nameTextView]는 뷰 객체로
규정됩니다.
이를 [TextView] 객체로 변경하여야
합니다.
잘못된 유형이 있음을
나타내는 오류가 발생되었습니다.
유형의 객체인 [TextView]가
필요합니다. 하지만 [type view]의
객체를 검색하였습니다.
이로 인해 뷰를 반환하는 ID를 통해
뷰를 검색하고 이 좌측은
[TextView]를 필요로 합니다.
이것은 [findViewById]에 의해
[TextView]로 반환된 뷰의 캐스팅을
추가하여야 함을 의미합니다.
그리고 [nameTextView]인
이 모든 것을 좌측 변수에 저장할 수
있습니다.
이제 오류가 사라지고 "Laura"라는
문자를 이 [TextView]에 설정할 수 있습니다.
오류는 1행에 발생하였습니다. 따라서
정확한 코드를 이곳에 적었습니다.
전반적인 설명은 이 뷰를 [TextView]로
캐스팅 하는 것이 필요하고 이를
[nameTextView] 변수 내부에 저장하는
것입니다.
이 같은 방식으로, 이곳의 코드 행 옆에
[TextView] [method]인
[nameTextView.setText]를 호출할 수
있습니다.
2번으로 넘어가 봅시다.
이 코드를 복사하여 안드로이드
스튜디오 붙여 넣을 것입니다.
여기에 제가 붙여 넣은 코드가 있습니다.
첫 코드 행은 정확한 것 같습니다.
오류가 없습니다.
하지만 두 번째 행은 붉은 색 밑줄이
있습니다. 그리고
잘못된 유형의 오류가 있음을
나타냅니다.
문자열이 요구됨을 나타냅니다.
하지만, 대신 [int]를 검색하였습니다.
이를 더 잘 이해하기 위해, [TextView]
문서 내부에 있는 [method]
[getMaxLines]를 살펴보도록 합니다.
[TextView] 문서에서,
[getMaxLines] [method]를 검색할
것입니다.
여기 있네요.
입력 파라미터는 없고
이 [method]의 반환 값은
정수입니다.
안드로이드 스튜디오는 이
[method]로 인해 문제를
제기하였습니다. 이것은 정수를
반환하였고 우리는 이를 문자열
변수에 저장하려고 하였습니다.
따라서, 이 변수의 데이터 유형을
[int]로 변경해야 합니다.
오류가 사라졌습니다.
따라서 이 [method]의 반환 값은
정수입니다.
이제 이것을 이 [maxLines] 변수에
저장할 수 있습니다.
경고가 사라지지 않았습니다.
변수 [maxLines]을 사용할 수 없다고
나타냅니다.
하지만 이것은 단지 코드 정보입니다.
일반적인 앱에서는
나중에 실질적으로 이 변수를
사용할 것으로
생각합니다.
따라서 2행과 이곳의 오류는
업데이트 된 코드입니다.
이에 관한 전반적인 설명은
이 [method]의 반환 값이
정수여야 한다는 것입니다.
3번으로 넘어가 봅시다.
이곳에 3번에 대한 코드가 있습니다.
안드로이드 스튜디오의 3번에 대한
코드를 복사하고 붙여 넣었습니다.
잘못된 유형이라는 오류 메시지가
발생되었습니다.
[ImageView]가 요구되었습니다.
하지만 대신 뷰를 검색하였습니다.
이는 우리가 [TextView]에서
발견하였던 오류와 비슷합니다.
이 [method]는 뷰를 반환합니다.
좌측 면에서 [ImageView]에 이를
저장하려고 합니다.
이 뷰 객체를 [ImageView]로 캐스팅
해야 합니다.
ID 아이콘을 가진 뷰가 [ImageView]
이기 때문에 유효합니다.
따라서 이것을 [image view]로 캐스팅
하는데 문제가 없습니다.
이제 우측 면은
[ImageView]를 평가합니다.
이를 좌측의 변수에 저장할 수
있습니다.
이 변수는 데이터 유형 [ImageView]를
갖습니다. 자 이제 모든 것이 일치하고
오류는 사라졌습니다.
다음 부분에서, [ImageView]
[method], [SetImageResource]를
이 [IconImageView] 객체에 호출할 수
있습니다.
상징 로고를 처리할 수 없다는 오류가
하나 남아있습니다.
이로 인해 명칭에 대한 로고를 가진
앱의 이미지를 추가하지 않았습니다.
추가하였다면, 오류가 사라질 것입니다.
그리고 이곳의 코드는 문제가 없습니다.
여기 이 뷰를 [ImageView]로 캐스팅
한 정확한 코드가 있습니다.
마지막으로, 4번입니다.
안드로이드 스튜디오에서 이곳에 코드를
붙여 넣었고 놀랍게도 오류가 없습니다.
코드는 id 명을 가진 뷰를 검색하고
뷰를 반환하려고 합니다.
그리고 이는 [TextView]인 이 변수에
저장됩니다.
[TextView]는 뷰의 데이터 유형을 갖고
이는 우측 면과 일치합니다.
따라서 이 전체 코드 행은 정확합니다.
다음 행에서, 우리는
[View]인 이 객체를 가질 것입니다.
그리고 여기에 [setVisibility]
[method]를 호출할 것입니다.
[method]는 [View.GONE]인 하나의
입력 파라미터를 갖습니다.
왜 이것을 갖는지를 알아보기 위해
문서를 확인해 볼 수 있습니다.
뷰 클래스에 대한 문서에서,
[method] [setVisibility]를 검색할 수
있습니다.
[setVisibility]가 뷰 클래스 내에 있는
[method]임을 확인할 수 있습니다.
이것은 선명도를 나타내는 정수인 이
입력 내용을 갖습니다.
가능한 선명도 값들은
[VISIBLE], [INVISIBLE], [GONE]입니다.
뷰 클래스 내의 [setVisibility]가
[method]이기 때문에
이것은 이곳에서 유효한 호출입니다.
우리가 호출한 [method]가 뷰
클래스의 [method]이기 때문에 이를
[TextView]로 캐스팅 할 필요가
없습니다.
이제 [TextView] [method]를
사용하려고 했다면
이것을 [TextView]로 캐스팅 했어야
할 것입니다.
이 문제에 대해, [setVisibility]은 [View]
[method] 이기 때문에 오류가
발생되지 않고 이것을 [View]
객체로 두는 것은 문제가 없습니다.
이것은 참 어려운 문제입니다.
완전히 이해하지 못하여도
괜찮습니다.
다음 시험에서, 이에 관해 연습할
기회가 더 있습니다.
Vamos olhar o número 1.
Antes de eu falar a resposta,
vou copiar esse código e
colar no Android Studio.
Quero mostrar o tipo de erro
que podemos ter como resposta.
Agora, quando você estava fazendo o teste
você não precisava usar o Android Studio,
você poderia ter resolvido só
olhando o código aqui e
então escrito na resposta.
Então, usando ou não o
Android Studio, tudo bem.
Para fazer o código funcionar,
eu criei um novo projeto e
então modifiquei o arquivo de
layout ActivityMain,
para que tivesse várias visualizações
com esses ID's que vamos referenciar.
Não tenho certeza como
esse layout pareceria, mas
eu só quero colocar as visualizações aqui
com os nomes ID correspondentes.
Desse jeito, meu código
vai funcionar aqui.
Então, número um, eu colei o código aqui,
e eu percebi um erro.
Adroid Studios diz que não pode
determinar o método setText.
Se você lembrar o último vídeo,
Eu mencionei que setText
é um método TextView.
Isso significa que você só pode invocar
esse método em objetos TextView.
Nesse caso, vamos chamar
chamar de nameTextView.
Um nameTextView
deve ser um objeto view,
e precisamos mudar para
um objeto TextView.
Então recebemos um erro dizendo
que não há compatibilidade.
Um textview, um objeto tipo
TextView é requerido, mas
ao invés disso ele acha
um objeto typeview.
Isso porque findviewbyID
retorna uma visualização, e
esse lado esquerdo requer um TextView.
Isso significa que precisamos
modificar isso
para receber a visualização por
findViewById
Então podemos armazenar tudo isso
com o nome nameTextView
na variável do lado esquerdo.
Então o erro some, e podemos
colocar o texto "Laura" nesse TextView.
O erro está na linha 1,
então eu escrevi o código certo aqui.
A explicação geral é que precisamos
lançar essa view em um TextView
e então armazenar dentro
da variável nameTextView.
Desse jeito, nós podemos invocar
nameTextView.setText
que é um método TextView,
na próxima linha de código.
Vamos para o número dois.
Vou copiar o código e colar
no Android Studio.
Esse é o código que eu copiei.
A primeira linha
parece correta, sem erros.
Mas a segunda linha
está sublinhada de vermelho e
e isso quer dizer que existe
um erro de digitação.
Quer dizer que um string
é necessário mas o código é int.
Para entender melhor,
temos que olhar o método getMaxLines
nas instruções do TextView.
Nas instruções, vou procurar por
método getMaxLines.
E aqui está.
Não existem parâmetros de entrada,
e o valor de retorno
desse método é inteiro.
Então era por isso que o Android Studio
estava reclamando, por que esse método,
se está dando como resposta um inteiro
mas estamos tentando armazenar
como uma variável string.
Como resultado, eu preciso mudar esse tipo
de dado da variável para uma inteira.
Então o erro some.
Então, o valor de retorno
desse método é inteiro.
Logo, podemos armazenar
nessas variáveis maxLines.
Ainda tem um aviso.
Dizendo que a variável
maxLines nunca foi usada.
Mas isso é só um código snippet.
Eu presumi que se isso
fosse um aplicativo comum,
iríamos usar
essa variável depois.
Então o erro está na segunda linha
e esse é o código atualizado.
A explicação é que o valor de retorno
desse método deveria
ser inteiro.
Vamos para o exercício três.
Esse é o código do exercício três.
Eu copiei e colei o código
no Android Studio.
Aparece um erro com uma mensagem
dizendo que os tipos são incompatíveis.
Requer um ImageView,
mas é um view.
Esse erro é similar ao que acabamos
de ver com o TextView.
Esse método tem como
resposta uma view.
E do lado esquerdo, nós estamos tentando
armazenar dentro de um ImageView.
Então precisamos mudar esse objeto view
para um ImageView
Isso é valido por que o view no
ícone ID na verdade é um ImageView,
então tudo bem lançar isso
num imageview
Agora do lado direito,
equivale a um ImageView,
podemos armazenar dentro
da variável do lado esquerdo.
Essa variável tem um dado tipo ImageView
então agora tudo combina
e o erro some.
No próximo lado,
podemos invocar um método ImageView,
SetImageResource,
nesse objeto IconImageView object.
Ainda tem um erro, dizendo
que não aceita símbolos.
Isso é porque eu não adicionei uma imagem
no nosso aplicativo com a logo do nome.
Se eu adicionar, o erro some,
então nosso código está correto.
Esse é o código correto, onde eu armazenei
esse view em um ImageView.
Por último temos o número 4.
Eu colei o código no Android Studio
e surpreendentemente não tem erros.
O código está tentando achar
uma view com o id title,
e isso deve retornar um view como resposta
e fica armazenado na variável TextView.
TextView tem um tipo de dado View,
então isso combina com o lado direito,
então essa linha de código está correta.
Na próxima linha, vamos pegar
esse objeto, que é um ViewAnd,
e vamos invocar um método
setVIsibility
O método usa um parâmetro de entrada
chamado View.GONE.
Eu posso checar as instruções
para verificar o que significa isso.
Nas instruções da classe view,
eu posso procurar pelo
método setVisibility.
Eu vejo que setVisibility
é um método dentro da classe view.
É preciso de uma entrada inteira que
represente o estado de visibilidade.
Os valores possíveis da visibilidade são:
VISIBLE, INVISIBLE, e GONE
Como setVisibility é um método
dentro da classe view,
é uma entrada válida.
Não tem necessidade de lançar
em um TextView,
por que o método que estamos invocando
é um método da classe view.
Agora, se estamos tentando
usar o método TextView,
então vamos precisar
lançar em um TextView.
Então para esse exercício,
a resposta deve ser: sem erros,
porque setVisibility é um método view
e não tem problema deixa como objeto view.
Essas questões foram difíceis.
Tudo bem se você não acertou.
No próximo teste, você vai
poder praticar mais.
Давайте посмотрим на номер 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 метод представлений,
можно оставлять его как такой объект.
Это были трудные вопросы.
Не страшно, если вы ошиблись.
В следующем тесте вы сможете
больше потренироваться на этом.
1 numaraya bakalım.
Cevabı açıklamadan önce,
bu kodu kopyalayıp
Android Studio'ya yapıştıracağım.
Ne tür bir hata çıkacağını
göstermek istiyorum.
Bu sınavı çözerken Android
Studio kullanmanıza gerek yoktu.
Sadece burada koda bakarak
ve cevabı yazarak
bunu çözmüş olabilirdiniz.
Yani, Android Studio kullanıp
kullanmamanız benim için sorun değil.
Kodun çalışmasını sağlamak için
yeni bir proje oluşturdum ve
sonra etkinlik ana düzen
dosyasını modifiye edip
başvurucağımız bu kimlikleri içeren
bir grup görünüm olmasını sağladım.
Bu düzenin nasıl görüneceğinden
bile emin değilim ama
sadece karşılık gelen kimlik adlarına
ait görünümleri buraya koymak istedim.
Bu şekilde, kodum burada çalışacak.
Yani bir numara için, buraya kodu
yapıştırdım ve bir hata görüyorum.
Android Studio, setText yöntemini
çözümleyemediğini söylüyor.
Geçen videodan hatırlarsanız,
setText'in bir TextView
yöntemi olduğunu belirtmiştim.
Yani bu yönteme sadece
TextView nesnelerinde başvurabilirsiniz.
Bu durumda,
nameTextView'e başvuruyoruz.
Bir nameTextView,
görünüm nesnesi ilan edilmiş
Bunu TextView nesnesi
olarak değiştirmemiz gerekir.
Sonra uyumsuz türler olduğunu
söyleyen bir hata alıyoruz.
TextView tipi bir nesne
olan typeTextview lazım ama
bunun yerine typeview bir nesne buldu.
Çünkü, kimliğe göre görünüm
bul bir görünüm veriyor ve
bu sol taraf bir
TextView gerektiriyor.
Yani findViewById tarafından verilen
görünümü TextView'e dönüştürmek
için bunu eklememiz gerek.
Sonra tüm bu şeyi,
yani nameTextView'yu
sol taraftaki değişkende depolayabiliriz.
Sonra hata kaybolur ve bu TextView'da
"Laura" metnini ayarlayabiliriz.
Hata 1. satırda, yani buraya
doğru kodu yazdım.
Genel açıklama, bu görüntüyü
TextView'ya çevirmeliyiz
ve sonra bir nameTextView
değişkeninde depolamalıyız.
Bu şekilde buna
nameTextView.setText diyebiliriz.
Bu da kodun sonraki satırında
yer alan TextView yöntemi.
İki numaraya geçelim.
Bu kodu kopyalayıp Android
Studio'ya koyacağım.
Yapıştırdığım kod bu.
Kodun ilk satırı doğru gibi
görünüyor. Hiç hata yok.
Fakat ikinci satırın altı kırmızıyla
çizili ve uyumsuz
türler hatası var diyor.
Bir dize gerekli ama bunun
yerine bir int bulduğunu söylüyor.
Bu daha iyi anlamak için,
TextView belgeleri içindeki
getMaxLines yöntemine bakmak gerekir.
TextView belgelerinde
getMaxLines yöntemini arayacağım.
Ve işte burada.
Hiç giriş parametresi yok
ve bu yöntemin dönüş
değeri bir tam sayı.
Yani Android Studio bundan
şikayetçiydi. Çünkü bu yöntem
bir tam sayı veriyor ve biz
bunu bir Dize değişkeninde
depolamaya çalışıyorduk.
Sonuç olarak, değişken veri türünü
int olarak değiştirmem gerekir.
O zaman hata kayboluyor.
Yani, bu yöntemin
verdiği değer bir tam sayı.
Yani, bunun maxLines
değişkeninde saklayabiliriz.
Hala kalan bir uyarı var.
maxLines değişkeninin hiç
kullanılmamış olduğunu söylüyor.
Ama bu sadece bir kod parçacığı.
Bu normal bir uygulama olsaydı
aslında bu değişkeni daha sonra
kullanmak isteyeceğimizi sanıyorum.
Yani, hata ikinci satırda
ve güncellenmiş kod bu.
Genel açıklama bu
yöntemin dönüş değerinin
bir tamsayı olmalı.
Üç numaraya geçelim.
Üç numaraya ait kod bu.
Üç numara için kodu kopyalayıp
Android Studio'ya yapıştırdım.
Uyumsuz türler şeklinde
bir hata mesajı var.
Bir ImageView gerekliydi, ama
bunun yerine bir görünüm buldu.
Bu az önce TextView ile
gördüğümüz hataya benzer.
Bu yöntem bir görünüm veriyor.
Sol tarafta da, bunu bir ImageView
içinde depolamaya çalışıyoruz.
Yani bu görünüm nesnesini
ImageView'e çevirmemiz gerekir.
Kimlik simgeli görünüm aslında
bir ImageView olduğundan bu geçerli.
Bu yüzden bir görüntü
görünümüne çevirmek sorun olmaz.
Şimdi sağ taraf bir
ImageView olduğundan,
bunu sol taraftaki
değişkende depolayabiliriz.
Bu değişkende ImageView
veri tipi olduğundan her şey
eşleşiyor ve hata yok oluyor.
Bir sonraki tarafta, bir
ImageView yöntemi olan
SetImageResource'u bu
IconImageView nesneye çağırabiliriz.
Simge logosunu çözemediğini
söyleyen kalan bir hata daha var.
Çünkü uygulamaya isim logolu
bir resim eklemedim.
Onu eklediğimde hata kaybolacak
yani burada kodumuz doğru.
Bu görünümü bir ImageView'e
çevirdiğim doğru kod bu.
Son olarak, dört numaraya bakalım.
Kodu Android Studio'ya kopyaladım
ve şaşırtıcı şekilde hiçbir hata yok.
Kod, kimlik başlığına sahip bir
görünüm bulmaya çalışıyor ve
bu da TextView denen değişkende
depolanan bir görünüm vermeli.
TextView'nun veri türü Görünümü var.
Bu da sağ tarafla eşleşir, bu
nedenle bu kod satırı tümüyle doğru.
Bir sonraki satırda, bir Görünüm
olan bu nesneyi alıyor ve
bunun üzerine bir setVisibility
yöntemi çağırıyoruz.
Bu yöntem bir girdi parametresi,
yani View.GONE'ı alır.
Bunun nedenini doğrulamak
için belgeleri kontrol edebiliriz.
Görünüm sınıfı için belgelerde,
setVisibility yöntemini arayabilirim.
SetVisibility'nin görünüm sınıfı içinde
bir yöntem olduğunu görebiliyorum.
Bu girişi, görünürlük durumunu
temsil eden tam sayı alıyor.
Olası görünürlük değerleri
VISIBLE, INVISIBLE ve GONE'dır.
SetVisibility görünüm sınıfı
içinde bir yöntem olduğundan,
bu da geçerli bir çağrı.
Bunu TextView'ya
çevirmeye gerek yok
çünkü başvurduğumuz bu yöntem bir
görünüm sınıfı yöntemi.
Ama bir TextView yöntemi
kullanmaya çalışıyor olsaydık,
o zaman onu TextView'ya
çevirmemiz gerekirdi.
Yani, bu soru için hata yok,
çünkü setVisibility bir
Görünüm yöntemi ve Görünüm
nesnesi olarak bırakılabilir.
Bunlar zor sorulardı.
Bunları bilemeseniz de sorun değil.
Bir sonraki testte, biraz daha
pratik yapma şansına sahip olacaksınız.
Hãy nhìn mục số 1.
Trước khi cho biết câu trả lời,
tôi sẽ copy đoạn code này và
dán nó vào trong Android Studio.
Tôi muốn cho các bạn xem
loại lỗi nào sẽ hiện ra.
Khi bạn trả lời câu hỏi này, bạn không
nhất thiết phải dùng Android Studio,
bạn có thể giải nó bằng cách
nhìn vào những dòng code ở đây
và viết ra câu trả lời.
Vì thế, dù bạn có dùng Android Studio
hay không cũng không sao.
Để chạy code này,
tôi đã tạo một project mới và
chỉnh sửa tệp layout của phần
thực thi chính sao cho
nó chứa nhiều view với những ID
mà chúng ta sẽ liên hệ đến.
Tôi cũng không rõ
layout này sẽ trông thế nào
nhưng tôi chỉ muốn đặt view vào đây
với tên ID view tương ứng.
Bằng cách đó, code của tôi
sẽ chạy được ở đây.
Ở trường hợp thứ nhất, tôi dán đoạn code
vào đây và nhận lại một lỗi.
Android Studio cho biết nó không thể
xử lý phương thức setText.
Nếu bạn còn nhớ ở video trước,
tôi đã nói rằng setText là
một phương thức TextView.
Điều này có nghĩa là bạn chỉ có thể
triệu gọi nó trên đối tượng TextView.
Trong trường hợp này, ta đang
gọi nó trên nameTextView.
nameTextView được định nghĩa
là một đối tượng view,
chúng ta cần phải chuyển nó thành
một đối tượng TextView.
Thế rồi chúng ta nhận được một lỗi khác
về định dạng không tương thích.
Nó cần một đối tượng thuộc dạng
TextView, nhưng ngược lại
nó nhận được một
đối tượng dạng view.
Đó là vì phương thức tìm view
bằng ID sẽ trả lại một view, và
phần bên trái này
yêu cầu TextView.
Có nghĩa là chúng ta phải
gán phần view
được findViewById trả lại
thành một TextView.
Sau đó chúng ta có thể
lưu tất cả phần nameTextView
vào phần biến ở bên trái.
Vậy là phần lỗi đã biến mất, và ta có thể
thiết lập dòng chữ "Laura" trên TextView.
Phần lỗi nằm ở dòng 1, vì vậy
tôi viết dòng code đúng lên đây.
Giải thích ngắn gọn là ta cần phải
gán view này vào TextView và
lưu nó trong
biến nameTextView.
Bằng cách đó, chúng ta có thể
gọi nameTextView.setText,
một phương thức TextView,
ở dòng tiếp theo của code ở đây.
Hãy xem tiếp mục số hai.
Tôi sẽ copy phần code này
và dán vào Android Studio.
Đây chính là phần code
tôi đã dán vào.
Dòng đầu tiên có vẻ đúng,
không có lỗi nào cả.
Nhưng dòng thứ hai có
gạch chân màu đỏ và
và nó cho thấy có lỗi
định dạng không tương thích.
Nó cho biết, ở đây cần một chuỗi
nhưng nó chỉ tìm thấy một số nguyên.
Để hiểu rõ hơn điều này,
chúng ta nên tìm hiểu phương thức
getMaxLinestrong tài liệu TextView
Trong tài liệu về TextView,
tôi sẽ tìm kiếm
phương thức getMaxLines.
Nó đây.
Không có tham số đầu vào, và
giá trị trả về của phương thức
này là một số nguyên.
Đó chính là lý do mà Android Studio đang
làm khó chúng ta, vì phương thức này,
nó trả về một giá trị số nguyên
nhưng ta lại đang cố gắng lưu nó
vào một biến dạng chuỗi.
Kết quả là, tôi sẽ cần phải thay đổi
dạng dữ liệu của biến thành số nguyên.
Và vấn đề sẽ không còn nữa.
Vậy, giá trị trả về của phương thức
này là một số nguyên.
Và chúng ta có thể lưu nó
trong biến maxLines này.
Vẫn còn một cảnh báo nữa.
Nội dung là biến maxLines
không hề được sử dụng
Nhưng đây chỉ là
một mẩu code rất nhỏ.
Tôi tin rằng nếu đây
là một ứng dụng thông thường,
chúng ta sẽ cần phải
sử dụng đến biến này sau này.
vậy, lỗi nằm ở dòng số 2,
và đây là code đã cập nhật.
Giải thích ngắn gọn là giá trị trả về
của phương thức này cần
là một số nguyên.
Hãy xem tiếp số 3.
Đây là code của số 3.
Tôi đã copy và dán phần code
của số 3 vào Android Studio.
Một lỗi xuất hiện với nội dung
định dạng không tương thích.
Ta cần một giá trị ImageView,
nhưng nó chỉ nhận được một giá trị view.
Lỗi này tương tự với lỗi
ta đã gặp với TextView.
Phương thức này trả về một view.
Và, ở phía tay trái, chúng ta đang
cố gắng lưu nó trong một ImageView.
Vì vậy chúng ta cần phải gán đối tựợng
view này thành một ImageView.
Điều này hợp lệ vì phần view với
ID icon thực chất là một ImageView,
vì vậy chúng ta có thể
gán nó thành ImageView.
Bây giờ phần code ở phía bên phải
đã có giá trị ImageView,
ta có thể lưu trữ nó trong một biến
nằm bên tay trái.
Biến này có định dạng dữ liệu ImageView,
và giờ mọi thứ đều trở nên hợp lý.
Lỗi không còn nữa.
Tiếp theo, ta có thể gọi
một phương thức ImageView,
SetImageResource, trên
đối tượng IconImageView này.
Còn một lỗi nữa cho biết
không thể thực thi biểu tượng logo.
Đó là vì tôi chưa thêm hình ảnh
nào vào trong ứng dụng với tên logo.
Chỉ cần tôi thêm ảnh, lỗi này sẽ biến mất
và code của chúng ta ở đây là đúng.
Đây là code chính xác sau khi tôi đã
gán view này vào ImageView.
Cuối cùng là số 4.
Tôi dán phần code vào Android Studio,
và thật ngạc nhiên là không có lỗi nào hết.
Code này đang cố gắng tìm kiếm
view bằng tiêu đề id, và
nó sẽ trả lại một view, được lưu trong
biến có tên TextView.
TextView có định dạng
dữ liệu là View, vì vậy
khớp với vế bên phải,
toàn bộ dòng code này là chính xác.
Ở dòng tiếp theo, chúng ta
sẽ lấy đối tượng dạng View này, và
gọi phương thức
setVisibility trên đó.
Phương thức này nhận một tham số
đầu vào là View.GONE.
Tôi có thể kiểm tra tài liệu
để xác minh.
Trong tài liệu cho nhóm view,
tôi có thể tìm kiếm
phương thức setVisibility.
Tôi có thể thấy rằng setVisibility là
một phương thức nhánh của nhóm view.
Nó nhận đầu vào là một số nguyên
thể hiện trạng thái hiển thị.
Các giá trị có thể nhận được là
VISIBLE, INVISIBLE, và GONE.
Bởi setVisibility là một phương thức
nằm trong nhóm view,
đây là một triệu gọi hợp lệ.
Ta không cần phải
gán nó thành TextView.
Bởi vì phương thức chúng ta đang gọi
là một phương thức thuộc nhóm view.
Giờ nếu chúng ta muốn sử dụng
phương thức TextView,
chúng ta cần gán nó
thành TextView.
Vì vậy, với câu hỏi này,
đáp án là không có lỗi, vì
setVisibility là phương thức dạng View,
ta có thể để nguyên nó là đối tượng view.
Đây là những câu hỏi khó.
Nếu bạn chưa thể trả lời đúng,
không sao.
Trong bài kiểm tra sắp tới,
bạn sẽ có nhiều cơ hội để thực hành hơn.
先看第一个
公布答案前我会先复制这段代码
然后粘贴到 Android Studio 中
看看会出现什么错误
现在你要完成这个测试 不需要借助 Android Studio
只看代码就能解决
然后写下你的答案
所以 用不用 Android Studio 都可以
为了调通代码 我创建了一个新的项目
然后修改 activity_main 布局文件
为布局文件添加 View 并添加需要被引用的 ID
我甚至不太确定这个布局会是什么样子
我只是把这些带有相应 ID 的视图放在这
这样 代码就调通了
把第一个代码粘过来 它报错了
不能解析 setText 方法
如果你还记得上一个视频
我提到过 setText 是一个 TextView 方法
也就意味着你只能用 TextView 对象调用这个方法
在这里 是用 nameTextView 调用的
nameTextView 声明为一个 View对象
我们需要把它变成 TextView 对象
又报错了 说类型不兼容
我们需要一个 TextView 类型
但这是一个 View 的对象
因为 findViewByID 的返回值是 View 类型
而左边需要一个 TextView 类型
意味着我们必须加上这个
把 findViewById 返回的 View 转化成 TextView
然后我们把这个整体保存起来
存到左边 nameTextView 变量里
不报错了 然后在 TextView 里设置文本为 Laura
错误在第一行 把正确的代码写在下边
我们需要把 View 格式转换成 TextView 格式
然后保存在 nameTextView 变量里
这样就可以调用 nameTextView.setText 方法了
这是一个 TextView 方法
来看第二个
把代码复制粘贴到 Android Studio 中
就是这
第一行看起来是正确的
但第二行被标记为红色了
它说类型不兼容
应该是字符串类型 但这却是整型
为了更好地理解
我们应该查查 TextView 文档里的 getMaxLines 方法
在 TextView 文档里 我来搜一下
getMaxLines 方法
在这
这里不需要输入参数
返回值是整型
这就是 Android studio 报错的原因 因为这个方法
返回值是整型
但我们却想把它存进 String 变量中
所以我需要把这个数据类型转换为 int
程序调通了
这个方法的返回值是一个整数
所以我们可以把它存到 maxLines 变量里了
警告还存在
说 maxLines 变量从来没被使用过
但这只是一个代码片段
我想如果是在一个常规应用里
我们稍后会用到这个变量
错误在第二行 这里是更新后的代码
也就是说这个方法的返回值
应该是一个整型
来看第三个
这是代码
我把它们粘到 Android Studio 中
报错说类型不匹配
需要的是 ImageView 类型 但这是一个 View 类型
这个错误跟之前的 TextView 很类似
方法返回值是 View 类型
在左边这 我们却想存到 ImageView 类型中
我们需要把 View 类型转化成 ImageView 类型
这是有效的 因为带有 icon ID 的视图是 ImageView
所以可以把它转化成 ImageView 格式
既然右边也是 ImageView 格式
我们就能把它存到左边的变量里了
这个变量就是 ImageView 格式 非常匹配
错误修复了
接下来 我们可以调用 ImageView 格式的方法了
也就是 SetImageResource 方法 用 IconImageView 对象调用
报错说无法解析这个 logo 符号
因为我在应用里没有添加名字为 logo 的图片
如果我加上 错误就会消失 代码就正确了
这是转化格式后正确的代码
现在看第四个
把代码粘到 Android Studio 里 竟然没有报错
代码想要找到带有 id 为 title的 View
并且返回一个视图类型 然后存到 textView 变量里
textView 是视图格式
和右边的格式一样 所以代码没报错
下一行 这有一个对象 是 View 类型
我们正在调用一个 setVisibility 方法
方法有一个输入参数 View.GONE
我可以查阅一下文档来弄懂为什么是这样的
在 View 类的文档里 搜索一下
setVisibility 方法
可以看到 setVisibility 是 View 类中的一个方法
有一个输入 一个可见状态的整数
它可能的值有 VISIBLE INVISIBLE 还有GONE
因为 setVisibility 是 View 类中的方法
这是一个有效的调用
没有必要转化成 TextView 格式
因为我们调用的方法是 View 类的
如果我们想要调用 TextView 类的方法
就需要类型转换了
对于这个问题 你应该写没错误 因为
setVisibility 是一个 View 类的方法 可以保持对象原有类型
这些问题不简单
没答对也没关系
接下来 你还有机会做更多的练习
讓我們看看第一。
在我揭示答案之前,我會複製這編碼及
貼在機械板頁內。
我想讓你看看會有什麼錯誤出現。
現在當你在破解這測驗時,你不需要用機械板頁,
你只需要看看這裡的編碼便可以破解之後
寫下答案。
所以無論你是否用機械板頁,我也沒所謂。
要令編碼可行, 我要制返一個新方案之後
我要更改主活動模式檔案令到它
會顯示一堆這些我們會提及的認證碼。
我都不確定這布局會看來怎樣但
我只是想把顯示於在這相關的顯示認證名字一起。
這樣,我的編碼便可行。
所以第一,我把編碼在這貼上,而我看到錯誤。
機械板頁說它不能解決設定文字方法。
若你記得上一段影片,
我提及過設定文字是一種顯示文字方法。
這意思是你只可以於顯示文字物件中執行這方法。
在這個案中, 我們會於顯示文字名中執行。
一個顯示文字名是公告為一個顯示物件,
我們需要改這個為一個顯示文字物件。
之後我們會得到一個錯誤表示有一個不協調的種類。
一個文字顯示, 這類規定一個文字顯示的物件但
它找到的卻是一個顯示種類。
這是因為用認證顯示找顯示是會回一個顥示的,而
這左手邊是規定一個文字顯示。
That means we have to add this to cast
這意思是我但要加去
把得回的用認證找顯示轉為文字顯示。
之後我們把整個儲存起來,
即是顯示文字名,於左手邊的可變項。
之後錯誤便會消失,而我們可以設定文字"Laura"於這文字顯示。
錯誤在第一行,所以我在這裡寫上正確的編碼。
普遍的解釋是我們需要設定顯示為文字顯示之後
把這儲存於文字顯示的可變項名字內。
這樣,我們可以叫顯示文字名.設定文字,
即是二個顯示文字方法, 於這裡的下一行編碼。
讓我們來到第二。
我會複製這編碼及放於機械板頁。
這就是我貼上的編碼。
第一行的編碼似乎正確,沒有出現錯誤。
但第二行有紅色底線而
這說明這裡有不合乎規定種頪的錯誤。
它說, 這裡規定了串但找到了int.
要理解這個多一些,
我們應該查看於顯示文字文件拿最多行的方法。
在顯示文字文件內, 我會找
取得最多行方法。
而就在這裡了。
這裡沒有參數輸入, 及
這方法得回的值是一個整數。
所以這就是為何機械板頁在投訴, 因為這方法,
若是回了一個整數 ,但
我們在嘗試把這儲存到一個串的可變項。
結果, 我需要改這數據類可變項為int.
之後錯誤便會消失。
所以, 這返法得回的值是一個整數。
所以, 我們可以把這儲存到最多行可變項。
這裡有一個警告仍然存在。
說明最多行可變項從來沒有被用過果。
這只是一個編碼片斷。
我假定若這只是一個普通的程式我們
其實會想遲些用這可變項。
所以, 錯誤在第二行而這裡就是新的編碼。
普遍的解釋是這方法的回值應該是
一個整數。
讓我們到第三。
這是第三的編碼。
我複製及貼上編碼給第三的機械板頁。
這裡有一個錯誤信息說種類不乎合規定。
要求的是一個畫面顯示, 但卻找到一個顯示。
這跟之前文字顯示的錯誤相似。
這方法回了一個顯然。
及,在左手邊, 我們在嘗試儲存於畫面顯示內。
所以我們需要設定這顯示物件為畫面顯示。
這是可行的因為認證標誌其實是一個畫面顯示,
所以是可以設定為畫面顯示。
現在右手邊已變化為畫面顯示,
我們可把這儲存到右手邊的可變項。
這可變項的數據類為畫面顯示所以所有東西都可配對上而
錯誤亦消失了。
在另一邊, 我們可以固執行一個畫面顯示方法,
設定畫面資源, 於這個標誌畫面顯示物件。
這只剩下一個錯誤說明未能解解符號標識。
這是因為我沒有把畫面及名字標識加到我們的程式中。
若我加上了, 那錯誤便會消失,
所以我們這裡的編碼是正確的。
這就是正確的編碼於這裡我設定畫面為畫面顯示。
最後我們有第四。
我把編碼貼在機械板頁而出奇地沒有出現錯誤。
編碼在嘗試於認證中找到畫面而
這應該回一個畫面,
這會被儲存在文字顯示的可變項內。
文字顯示的數據類為畫面, 所以
這會跟右手邊的匹配, 所以這整行的編碼是對的。
於下一行我們會把這物失, 一個畫而
定能見度方法。
這返法收取一個參數輸入即是顯示走了。
我可以查看文件認證為何會這樣。
於顯示級別文件內, 我何以查找
設定能見度方法。
我可以看到設定能見度是一個畫面內級別內的方法。
這會取得輸入, 一個整數去代表能見度的情況。
有機會的能見到值是可見, 透明, 及走了。
由於設定能見度方法是畫面級別內的方法,
這個執行性是可行的。
這裡沒有必要設定為文字顯示
因為我們要執行的方法是畫面級別的方法。
現在若我們想試試用一個文字顯示方法,
那我們需要設定為文字顯示。
所以這個問題, 你應該放上沒有錯誤,因為
設定能見度是一個顯示方法,
而是可以由得它為一個顯示物件。
這些問題都很難。
若你沒有答對不緊要。
於下一個測驗, 你會有機會多些練習。