Turkish subtitles

← 12-36 Casting with findViewById - Solution

Get Embed Code
13 Languages

Showing Revision 2 created 12/04/2015 by Fran Ontanaya.

  1. 1 numaraya bakalım.
  2. Cevabı açıklamadan önce,
    bu kodu kopyalayıp
  3. Android Studio'ya yapıştıracağım.
  4. Ne tür bir hata çıkacağını
    göstermek istiyorum.
  5. Bu sınavı çözerken Android
    Studio kullanmanıza gerek yoktu.
  6. Sadece burada koda bakarak
    ve cevabı yazarak
  7. bunu çözmüş olabilirdiniz.
  8. Yani, Android Studio kullanıp
    kullanmamanız benim için sorun değil.
  9. Kodun çalışmasını sağlamak için
    yeni bir proje oluşturdum ve
  10. sonra etkinlik ana düzen
    dosyasını modifiye edip
  11. başvurucağımız bu kimlikleri içeren
    bir grup görünüm olmasını sağladım.
  12. Bu düzenin nasıl görüneceğinden
    bile emin değilim ama
  13. sadece karşılık gelen kimlik adlarına
    ait görünümleri buraya koymak istedim.
  14. Bu şekilde, kodum burada çalışacak.
  15. Yani bir numara için, buraya kodu
    yapıştırdım ve bir hata görüyorum.
  16. Android Studio, setText yöntemini
    çözümleyemediğini söylüyor.
  17. Geçen videodan hatırlarsanız,
  18. setText'in bir TextView
    yöntemi olduğunu belirtmiştim.
  19. Yani bu yönteme sadece
    TextView nesnelerinde başvurabilirsiniz.
  20. Bu durumda,
    nameTextView'e başvuruyoruz.
  21. Bir nameTextView,
    görünüm nesnesi ilan edilmiş
  22. Bunu TextView nesnesi
    olarak değiştirmemiz gerekir.
  23. Sonra uyumsuz türler olduğunu
    söyleyen bir hata alıyoruz.
  24. TextView tipi bir nesne
    olan typeTextview lazım ama
  25. bunun yerine typeview bir nesne buldu.
  26. Çünkü, kimliğe göre görünüm
    bul bir görünüm veriyor ve
  27. bu sol taraf bir
    TextView gerektiriyor.
  28. Yani findViewById tarafından verilen
  29. görünümü TextView'e dönüştürmek
    için bunu eklememiz gerek.
  30. Sonra tüm bu şeyi,
  31. yani nameTextView'yu
    sol taraftaki değişkende depolayabiliriz.
  32. Sonra hata kaybolur ve bu TextView'da
    "Laura" metnini ayarlayabiliriz.
  33. Hata 1. satırda, yani buraya
    doğru kodu yazdım.
  34. Genel açıklama, bu görüntüyü
    TextView'ya çevirmeliyiz
  35. ve sonra bir nameTextView
    değişkeninde depolamalıyız.
  36. Bu şekilde buna
    nameTextView.setText diyebiliriz.
  37. Bu da kodun sonraki satırında
    yer alan TextView yöntemi.
  38. İki numaraya geçelim.
  39. Bu kodu kopyalayıp Android
    Studio'ya koyacağım.
  40. Yapıştırdığım kod bu.
  41. Kodun ilk satırı doğru gibi
    görünüyor. Hiç hata yok.
  42. Fakat ikinci satırın altı kırmızıyla
  43. çizili ve uyumsuz
    türler hatası var diyor.
  44. Bir dize gerekli ama bunun
    yerine bir int bulduğunu söylüyor.
  45. Bu daha iyi anlamak için,
  46. TextView belgeleri içindeki
    getMaxLines yöntemine bakmak gerekir.
  47. TextView belgelerinde
  48. getMaxLines yöntemini arayacağım.
  49. Ve işte burada.
  50. Hiç giriş parametresi yok
  51. ve bu yöntemin dönüş
    değeri bir tam sayı.
  52. Yani Android Studio bundan
    şikayetçiydi. Çünkü bu yöntem
  53. bir tam sayı veriyor ve biz
  54. bunu bir Dize değişkeninde
    depolamaya çalışıyorduk.
  55. Sonuç olarak, değişken veri türünü
    int olarak değiştirmem gerekir.
  56. O zaman hata kayboluyor.
  57. Yani, bu yöntemin
    verdiği değer bir tam sayı.
  58. Yani, bunun maxLines
    değişkeninde saklayabiliriz.
  59. Hala kalan bir uyarı var.
  60. maxLines değişkeninin hiç
    kullanılmamış olduğunu söylüyor.
  61. Ama bu sadece bir kod parçacığı.
  62. Bu normal bir uygulama olsaydı
  63. aslında bu değişkeni daha sonra
    kullanmak isteyeceğimizi sanıyorum.
  64. Yani, hata ikinci satırda
    ve güncellenmiş kod bu.
  65. Genel açıklama bu
    yöntemin dönüş değerinin
  66. bir tamsayı olmalı.
  67. Üç numaraya geçelim.
  68. Üç numaraya ait kod bu.
  69. Üç numara için kodu kopyalayıp
    Android Studio'ya yapıştırdım.
  70. Uyumsuz türler şeklinde
    bir hata mesajı var.
  71. Bir ImageView gerekliydi, ama
    bunun yerine bir görünüm buldu.
  72. Bu az önce TextView ile
    gördüğümüz hataya benzer.
  73. Bu yöntem bir görünüm veriyor.
  74. Sol tarafta da, bunu bir ImageView
    içinde depolamaya çalışıyoruz.
  75. Yani bu görünüm nesnesini
    ImageView'e çevirmemiz gerekir.
  76. Kimlik simgeli görünüm aslında
    bir ImageView olduğundan bu geçerli.
  77. Bu yüzden bir görüntü
    görünümüne çevirmek sorun olmaz.
  78. Şimdi sağ taraf bir
    ImageView olduğundan,
  79. bunu sol taraftaki
    değişkende depolayabiliriz.
  80. Bu değişkende ImageView
    veri tipi olduğundan her şey
  81. eşleşiyor ve hata yok oluyor.
  82. Bir sonraki tarafta, bir
    ImageView yöntemi olan
  83. SetImageResource'u bu
    IconImageView nesneye çağırabiliriz.
  84. Simge logosunu çözemediğini
    söyleyen kalan bir hata daha var.
  85. Çünkü uygulamaya isim logolu
    bir resim eklemedim.
  86. Onu eklediğimde hata kaybolacak
    yani burada kodumuz doğru.
  87. Bu görünümü bir ImageView'e
    çevirdiğim doğru kod bu.
  88. Son olarak, dört numaraya bakalım.
  89. Kodu Android Studio'ya kopyaladım
    ve şaşırtıcı şekilde hiçbir hata yok.
  90. Kod, kimlik başlığına sahip bir
    görünüm bulmaya çalışıyor ve
  91. bu da TextView denen değişkende
    depolanan bir görünüm vermeli.
  92. TextView'nun veri türü Görünümü var.
  93. Bu da sağ tarafla eşleşir, bu
    nedenle bu kod satırı tümüyle doğru.
  94. Bir sonraki satırda, bir Görünüm
    olan bu nesneyi alıyor ve
  95. bunun üzerine bir setVisibility
    yöntemi çağırıyoruz.
  96. Bu yöntem bir girdi parametresi,
    yani View.GONE'ı alır.
  97. Bunun nedenini doğrulamak
    için belgeleri kontrol edebiliriz.
  98. Görünüm sınıfı için belgelerde,
  99. setVisibility yöntemini arayabilirim.
  100. SetVisibility'nin görünüm sınıfı içinde
    bir yöntem olduğunu görebiliyorum.
  101. Bu girişi, görünürlük durumunu
    temsil eden tam sayı alıyor.
  102. Olası görünürlük değerleri
    VISIBLE, INVISIBLE ve GONE'dır.
  103. SetVisibility görünüm sınıfı
    içinde bir yöntem olduğundan,
  104. bu da geçerli bir çağrı.
  105. Bunu TextView'ya
    çevirmeye gerek yok
  106. çünkü başvurduğumuz bu yöntem bir
    görünüm sınıfı yöntemi.
  107. Ama bir TextView yöntemi
    kullanmaya çalışıyor olsaydık,
  108. o zaman onu TextView'ya
    çevirmemiz gerekirdi.
  109. Yani, bu soru için hata yok,
    çünkü setVisibility bir
  110. Görünüm yöntemi ve Görünüm
    nesnesi olarak bırakılabilir.
  111. Bunlar zor sorulardı.
  112. Bunları bilemeseniz de sorun değil.
  113. Bir sonraki testte, biraz daha
    pratik yapma şansına sahip olacaksınız.