Bu codelab, Android Kotlin Temelleri kursuna dahildir. Codelab'ler üzerinden sırayla çalışıyorsanız bu kurstan en iyi şekilde yararlanabilirsiniz. Tüm kurs codelab'leri Android Kotlin Fundamentals codelabs açılış sayfasında listelenmektedir.
Giriş
Bu dersteki önceki codelab'lerde, GuessTheWord uygulaması için kodu iyileştirdiniz. Uygulama artık ViewModel
nesneleri kullandığından, uygulama rotasyonlarında ekran rotasyonları ve klavye kullanılabilirliği gibi değişiklikler yapıldı. Ayrıca, gözlemlenebilir LiveData
değerini de eklediniz. Bu nedenle, gözlemlenen veriler değiştiğinde görünümler otomatik olarak bilgilendirilir.
Bu codelab'de, GuessTheWord uygulamasıyla çalışmaya devam edersiniz. Görüntülemeyi uygulamadaki ViewModel
derse bağlarsınız. Böylece düzeninizdeki görünümler doğrudan ViewModel
nesneleriyle iletişim kurar. (Şimdiye kadar uygulamanızda görüntülemeler, uygulamanın parçaları aracılığıyla ViewModel
ile dolaylı olarak iletişim kuruyordu.) Veri bağlamayı ViewModel
nesneleriyle entegre ettikten sonra, uygulamanın parçalarında tıklama işleyicilere artık ihtiyacınız olmadığından bunları kaldırırsınız.
Ayrıca, GuessTheWord uygulamasını, LiveData
gözlemleyici yöntemlerini kullanmadan, verilerdeki değişiklikler konusunda kullanıcı arayüzünü bilgilendirmek amacıyla veri bağlama kaynağı olarak LiveData
kullanacak şekilde değiştirirsiniz.
Bilmeniz gerekenler
- Kotlin'de temel Android uygulamaları oluşturma.
- Etkinlik ve parça yaşam döngülerinin işleyiş şekli.
- Uygulamanızda
ViewModel
nesnelerini kullanma. LiveData
ViewModel
kullanılarak veriler nasıl depolanır?LiveData
verilerindeki değişiklikleri gözlemlemek için gözlemci yöntemlerini ekleme.
Neler öğreneceksiniz?
- Veri Bağlama Kitaplığı'nın öğeleri nasıl kullanılır?
ViewModel
ile veri bağlama nasıl entegre edilir?LiveData
ile veri bağlama nasıl entegre edilir?- Bir parçadaki tıklama işleyicileri değiştirmek için dinleyici bağlamalarını kullanma.
- Veri bağlama ifadelerine dize biçimlendirmesi ekleme.
Yapacaklarınız
- GuessTheWord düzenleri, bilgileri aktarmak için kullanıcı arayüzü denetleyicilerini (parçalar) kullanarak dolaylı olarak
ViewModel
nesneleriyle iletişim kurar. Bu codelab'de, uygulamanın görünümleriyleViewModel
nesnelerini bağlarsınız. Böylece görünümler,ViewModel
nesneleriyle doğrudan iletişim kurar. - Uygulamayı, veri bağlama kaynağı olarak
LiveData
kullanacak şekilde değiştirirsiniz. Bu değişiklikten sonraLiveData
nesneleri, kullanıcı arayüzündeki verilerdeki değişiklikleri bildirir veLiveData
gözlemleyici yöntemlerine artık gerek yoktur.
5. Ders codelab'lerinde ise GuessTheWord uygulamasını, başlangıç koduyla başlayabilirsiniz. GuessTheWord, oyuncuların mümkün olan en yüksek skoru elde etmek için işbirliği yaptığı iki kişilik karalar tarzı bir oyun.
İlk oyuncu uygulamadaki kelimelere bakar ve her birini sırayla uygulamaya koyar, kelimeyi ikinci oyuncuya göstermemeye dikkat eder. İkinci oyuncu kelimeyi tahmin etmeye çalışır.
İlk oyuncu, oyunu oynamak için cihazda uygulamayı açar ve aşağıdaki ekran görüntüsünde bulunan "gitar" gibi bir kelime görür.
İlk oyuncu, kelimeyi bilerek hareket etmemeye dikkat eder.
- İkinci oyuncu kelimeyi doğru tahmin ettiğinde ilk oyuncu Anladım düğmesine basar ve sayıları bir artırır, ardından da gelen kelimeyi gösterir.
- İkinci oyuncu kelimeyi tahmin edemezse ilk oyuncu Atla düğmesine basar, bu şekilde sayı bir azalır ve sonraki kelimeye atlanır.
- Oyunu sonlandırmak için Oyunu Sonlandır düğmesine basın. (Bu işlev, serideki ilk codelab'in başlangıç kodunda yoktur.)
Bu codelab'de, ViewModel
nesnesindeki veri bağlamayı LiveData
ile entegre ederek GuessTheWord uygulamasını iyileştirirsiniz. Bu, düzendeki görünümler ile ViewModel
nesneleri arasındaki iletişimi otomatik hale getirir ve LiveData
kullanarak kodunuzu basitleştirmenizi sağlar.
Başlık ekranı |
Oyun ekranı |
Skor ekranı |
Bu görevde bu codelab için başlangıç kodunuzu bulup çalıştırırsınız. Başlangıç kodu olarak önceki codelab'de oluşturduğunuz GuessTheWord uygulamasını kullanabilir veya bir başlangıç uygulaması indirebilirsiniz.
- (İsteğe bağlı) Önceki codelab'den aldığınız kodu kullanmıyorsanız bu codelab için başlangıç kodunu indirin. Kodu arşivden çıkarıp projeyi Android Studio'da açın.
- Uygulamayı çalıştırıp oyunu oynayın.
- Got It (Anladım) düğmesinin bir sonraki kelimeyi gösterdiğini ve puanı bir birim artırdığını unutmayın. Atla düğmesi ise bir sonraki kelimeyi gösterir ve puanı bir birim azaltır. Oyunu Sonlandır düğmesi oyunu bitirir.
- Tüm kelimeler arasında gezinin ve uygulamanın puan ekranına otomatik olarak gittiğini fark edin.
Önceki bir codelab'de, GuessTheWord uygulamasında görüntülemelere erişmek için tür açısından güvenli bir yöntem olarak veri bağlamayı kullanıyordunuz. Ancak veri bağlamanın gerçek gücü, adın neyi gösterdiğidir: doğrudan uygulamanızdaki görünüm nesnelerine veri bağlama.
Mevcut uygulama mimarisi
Uygulamanızda, görünümler XML düzeninde tanımlanır ve bu görüntülemelerin verileri, ViewModel
nesnelerinde tutulur. Her görüntüleme ile karşılık gelen ViewModel
arasında, kullanıcı arayüzü arasında geçiş yapan bir kullanıcı arayüzü denetleyicisi bulunur.
Örneğin:
- Anladım düğmesi,
game_fragment.xml
düzen dosyasındaButton
görünümü olarak tanımlanır. - Kullanıcı Anladım düğmesine dokunduğunda,
GameFragment
parçasındaki bir tıklama dinleyici,GameViewModel
içinde ilgili tıklama dinleyiciyi çağırır. - Skor
GameViewModel
'da güncellenir.
Button
görünümü ve GameViewModel
doğrudan iletişim kuramaz. GameFragment
içinde tıklama dinleyiciye ihtiyacı vardır.
ViewModel, veri bağlamaya aktarıldı
Düzendeki görünümlerin, aracı olarak kullanıcı arayüzü denetleyicilerine bağlı kalmadan doğrudan ViewModel
nesnelerindeki verilerle iletişim kurması daha kolay olurdu.
ViewModel
nesneleri, GuessTheWord uygulamasında tüm kullanıcı arayüzü verilerini tutar. ViewModel
nesnesini veri bağlamaya ileterek, görünümler ile ViewModel
nesneleri arasındaki iletişimin bir kısmını otomatik hale getirebilirsiniz.
Bu görevde GameViewModel
ve ScoreViewModel
sınıflarını karşılık gelen XML düzenleriyle ilişkilendirirsiniz. Ayrıca, tıklama etkinliklerini işlemek için işleyici bağlamaları da ayarlayabilirsiniz.
1. Adım: GameViewModel için veri bağlama ekleyin
Bu adımda, GameViewModel
öğesini karşılık gelen düzen dosyasıyla (game_fragment.xml
) ilişkilendirirsiniz.
game_fragment.xml
dosyasına,GameViewModel
türünde bir veri bağlama değişkeni ekleyin. Android Studio'da hatalar varsa projeyi temizleyip yeniden oluşturun.
<layout ...>
<data>
<variable
name="gameViewModel"
type="com.example.android.guesstheword.screens.game.GameViewModel" />
</data>
<androidx.constraintlayout...
GameFragment
dosyasında,GameViewModel
veri aktarımına aktarın.
Bunu yapmak içinviewModel
öğesini önceki adımda beyan ettiğinizbinding.gameViewModel
değişkenine atayın.viewModel
başlatıldıktan sonra bu koduonCreateView()
içine yerleştirin. Android Studio'da hatalar varsa projeyi temizleyip yeniden oluşturun.
// Set the viewmodel for databinding - this allows the bound layout access
// to all the data in the ViewModel
binding.gameViewModel = viewModel
2. Adım: Etkinlik işleme için işleyici bağlamalarını kullanın
Dinleyici bağlamaları onClick()
, onZoomIn()
veya onZoomOut()
gibi etkinlikler tetiklendiğinde çalıştırılan bağlayıcı ifadelerdir. Dinleyici bağlantıları lambda ifadesi olarak yazılır.
Veri bağlama, bir dinleyici oluşturur ve işleyiciyi görünümde ayarlar. Dinlenen etkinlik gerçekleştiğinde, dinleyici lambda ifadesini değerlendirir. Dinleyici bağlamalar, Android Gradle Plugin 2.0 veya sonraki sürümleriyle çalışır. Daha fazla bilgi edinmek için Düzenler ve bağlama ifadeleri başlıklı makaleyi okuyun.
Bu adımda, GameFragment
içindeki tıklama dinleyicileri game_fragment.xml
dosyasındaki dinleyici bağlamalarıyla değiştirilir.
game_fragment.xml
içinde,onClick
özelliğiniskip_button
öğesine ekleyin. Bağlama ifadesi tanımlayın veGameViewModel
içindeonSkip()
yöntemini çağırın. Bu bağlama ifadesine dinleyici bağlama denir.
<Button
android:id="@+id/skip_button"
...
android:onClick="@{() -> gameViewModel.onSkip()}"
... />
- Benzer şekilde,
correct_button
tıklama etkinliğiniGameViewModel
'dekionCorrect
()
yöntemine bağlayın.
<Button
android:id="@+id/correct_button"
...
android:onClick="@{() -> gameViewModel.onCorrect()}"
... />
end_game_button
tıklama etkinliğiniGameViewModel
'dekionGameFinish
()
yöntemine bağlayın.
<Button
android:id="@+id/end_game_button"
...
android:onClick="@{() -> gameViewModel.onGameFinish()}"
... />
GameFragment
içinde, tıklama işleyicilerini ayarlayan ifadeleri ve tıklama işleyicilerin çağırdığı işlevleri kaldırın. Artık ihtiyacınız yok.
Kaldırılacak kod:
binding.correctButton.setOnClickListener { onCorrect() }
binding.skipButton.setOnClickListener { onSkip() }
binding.endGameButton.setOnClickListener { onEndGame() }
/** Methods for buttons presses **/
private fun onSkip() {
viewModel.onSkip()
}
private fun onCorrect() {
viewModel.onCorrect()
}
private fun onEndGame() {
gameFinished()
}
3. Adım: ScoreViewModel için veri bağlama ekleyin
Bu adımda, ScoreViewModel
öğesini karşılık gelen düzen dosyasıyla (score_fragment.xml
) ilişkilendirirsiniz.
score_fragment.xml
dosyasına,ScoreViewModel
türünde bir bağlama değişkeni ekleyin. Bu adım, yukarıdakiGameViewModel
işleminize benzer.
<layout ...>
<data>
<variable
name="scoreViewModel"
type="com.example.android.guesstheword.screens.score.ScoreViewModel" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
score_fragment.xml
içinde,onClick
özelliğiniplay_again_button
öğesine ekleyin. Bir işleyici bağlama tanımlayın veScoreViewModel
'daonPlayAgain()
yöntemini çağırın.
<Button
android:id="@+id/play_again_button"
...
android:onClick="@{() -> scoreViewModel.onPlayAgain()}"
... />
ScoreFragment
içinde,onCreateView()
içindeviewModel
başlatın. Daha sonra,binding.scoreViewModel
bağlama değişkenini başlatın.
viewModel = ...
binding.scoreViewModel = viewModel
ScoreFragment
içinde,playAgainButton
için tıklama işleyicisini ayarlayan kodu kaldırın. Android Studio bir hata gösteriyorsa projeyi temizleyip yeniden oluşturun.
Kaldırılacak kod:
binding.playAgainButton.setOnClickListener { viewModel.onPlayAgain() }
- Uygulamanızı çalıştırın. Uygulama daha önce olduğu gibi çalışır ancak artık düğme görünümleri doğrudan
ViewModel
nesneleriyle iletişim kurar. Görünümler artıkScoreFragment
içindeki düğme tıklama işleyicileri üzerinden iletişim kurmuyor.
Veri bağlama hata mesajlarıyla ilgili sorunları giderme
Bir uygulama, veri bağlamayı kullandığında, derleme işlemi, veri bağlama için kullanılan ara sınıflar oluşturur. Bir uygulama, siz derlemeye çalışana kadar Android Studio'nun algılamadığı hatalar içerebilir. Bu nedenle, kodu yazarken uyarı veya kırmızı kod görmezsiniz. Ancak derleme sırasında, oluşturulan ara sınıflardan gelen şifreli hatalar alırsınız.
Şifreli bir hata mesajı alırsanız:
- Android Studio Derleme bölmesindeki mesaja dikkatlice bakın.
databinding
ile biten bir konum görürseniz veri bağlamayla ilgili bir hata var. - Düzen XML dosyasında, veri bağlama kullanan
onClick
özelliklerinde hata olup olmadığını kontrol edin. Lambda ifadesinin çağırdığı işlevi bulun ve var olduğundan emin olun. - XML'nin
<data>
bölümünde, veri bağlama değişkeninin yazımını kontrol edin.
Örneğin, aşağıdaki özellik değerinde onCorrect()
işlev adının yanlış yazıldığını unutmayın:
android:onClick="@{() -> gameViewModel.onCorrectx()}"
Ayrıca, XML dosyasının <data>
bölümünde gameViewModel
yanlış yazımına dikkat edin:
<data>
<variable
name="gameViewModelx"
type="com.example.android.guesstheword.screens.game.GameViewModel" />
</data>
Android Studio, siz uygulamayı derleyene kadar buna benzer hataları algılamaz ve derleyici aşağıdaki gibi bir hata mesajı gösterir:
error: cannot find symbol import com.example.android.guesstheword.databinding.GameFragmentBindingImpl" symbol: class GameFragmentBindingImpl location: package com.example.android.guesstheword.databinding
Veri bağlama, ViewModel
nesneleriyle kullanılan LiveData
ile uyumludur. ViewModel
nesnelerine veri bağlama eklediğinize göre artık LiveData
nesnesini dahil etmeye hazırsınız.
Bu görevde, LiveData
gözlemcinin yöntemlerini kullanmadan kullanıcı arayüzündeki veriler hakkında bilgi vermek için GuessTheWord uygulamasını veri bağlama kaynağı olarak LiveData
kullanacak şekilde değiştirirsiniz.
1. Adım: game_fragment.xml dosyasına LiveData kelimesini ekleyin
Bu adımda, geçerli kelime metin görünümünü doğrudan ViewModel
içindeki LiveData
nesnesine bağlarsınız.
game_fragment.xml
ürünündeword_text
metin görünümüneandroid:text
özelliğini ekleyin.
Bağlama nesnesini (gameViewModel
) kullanarak GameViewModel
nesnesinden word
olan LiveData
nesnesine ayarlayın.
<TextView
android:id="@+id/word_text"
...
android:text="@{gameViewModel.word}"
... />
word.value
kullanımınız gerekmediğine dikkat edin. Bunun yerine, gerçek LiveData
nesnesini kullanabilirsiniz. LiveData
nesnesi, word
öğesinin geçerli değerini gösterir. word
değeri null ise LiveData
nesnesi boş bir dize görüntüler.
GameFragment
içinde,onCreateView()
öğesinde,gameViewModel
başlatıldıktan sonra,binding
etkinliğinin yaşam döngüsü sahibi olarak mevcut etkinliği ayarlayın. Bu, yukarıdakiLiveData
nesnesinin kapsamını tanımlar. Böylece nesne,game_fragment.xml
düzenindeki görünümleri otomatik olarak güncelleyebilir.
binding.gameViewModel = ...
// Specify the current activity as the lifecycle owner of the binding.
// This is used so that the binding can observe LiveData updates
binding.lifecycleOwner = this
GameFragment
içinde,LiveData
word
için gözlemleyiciyi kaldırın.
Kaldırılacak kod:
/** Setting up LiveData observation relationship **/
viewModel.word.observe(this, Observer { newWord ->
binding.wordText.text = newWord
})
- Uygulamanızı çalıştırıp oynayın. Mevcut kelime, kullanıcı arayüzü denetleyicisinde gözlemleyici yöntemi olmadan güncellenmektedir.
2. Adım: Score_Data.xml dosyasına puan LiveData ekleyin
Bu adımda, LiveData
score
öğesini puan parçasındaki puan metni görünümüne bağlarsınız.
score_fragment.xml
platformunda, puan metni görünümüneandroid:text
özelliğini ekleyin.text
özelliğinescoreViewModel.score
atayın.score
bir tam sayı olduğundanString.valueOf()
kullanarak bunu bir dizeye dönüştürün.
<TextView
android:id="@+id/score_text"
...
android:text="@{String.valueOf(scoreViewModel.score)}"
... />
ScoreFragment
içinde,scoreViewModel
başladıktan sonrabinding
değişkeninin yaşam döngüsü sahibi olarak mevcut etkinliği ayarlayın.
binding.scoreViewModel = ...
// Specify the current activity as the lifecycle owner of the binding.
// This is used so that the binding can observe LiveData updates
binding.lifecycleOwner = this
ScoreFragment
içinde,score
nesnesinin gözlemleyicisini kaldırın.
Kaldırılacak kod:
// Add observer for score
viewModel.score.observe(this, Observer { newScore ->
binding.scoreText.text = newScore.toString()
})
- Uygulamanızı çalıştırıp oynayın. Puan parçasındaki puanın, puan parçasında gözlemleyici olmadan doğru şekilde görüntülendiğini unutmayın.
3. Adım: Veri bağlama ile dize biçimlendirmesi ekleyin
Düzende, veri bağlamayla birlikte dize biçimlendirmesi ekleyebilirsiniz. Bu görevde mevcut kelimeyi, etrafına tırnak işareti ekleyecek şekilde biçimlendirirsiniz. Puan dizesini de aşağıdaki resimde gösterildiği gibi Geçerli Puan'ın önüne eklenecek şekilde biçimlendirebilirsiniz.
string.xml
olarak,word
vescore
metin görüntülemelerini biçimlendirmek için kullanacağınız aşağıdaki dizeleri ekleyin.%s
ve%d
, geçerli kelimenin ve geçerli puanın yer tutucularıdır.
<string name="quote_format">\"%s\"</string>
<string name="score_format">Current Score: %d</string>
game_fragment.xml
içinde,quote_format
dize kaynağını kullanmak içinword_text
metin görünümününtext
özelliğini güncelleyin.gameViewModel.word
içinde geçin. Bu işlem, geçerli kelimeyi biçimlendirme dizesine bağımsız değişken olarak iletir.
<TextView
android:id="@+id/word_text"
...
android:text="@{@string/quote_format(gameViewModel.word)}"
... />
score
metin görünümünüword_text
ile benzer şekilde biçimlendirin.game_fragment.xml
öğesinde,score_text
metin görünümünetext
özelliğini ekleyin.%d
yer tutucusunun temsil ettiği bir sayısal bağımsız değişken alan dize kaynağınıscore_format
kullanın. Bu biçimlendirme dizesi için bağımsız değişken olarakLiveData
nesnesini (score
) iletin.
<TextView
android:id="@+id/score_text"
...
android:text="@{@string/score_format(gameViewModel.score)}"
... />
GameFragment
sınıfınınonCreateView()
yöntemindekiscore
gözlemci kodunu kaldırın.
Kaldırılacak kod:
viewModel.score.observe(this, Observer { newScore ->
binding.scoreText.text = newScore.toString()
})
- Uygulamanızı temizleyin, yeniden oluşturun ve çalıştırın, ardından oyunu oynayın. Geçerli kelimenin ve skorun oyun ekranında biçimlendirildiğini unutmayın.
Tebrikler! LiveData
ve ViewModel
öğelerini uygulamanıza veri bağlama ile entegre ettiniz. Bu durum, düzeninizdeki görünümlerin, parçada tıklama işleyiciler kullanmadan ViewModel
ile doğrudan iletişim kurmasını sağlar. Ayrıca, LiveData
gözlemleyici yöntemleri olmadan, verilerdeki değişiklikler hakkında kullanıcı arayüzünü otomatik olarak bilgilendirmek için veri bağlama kaynağı olarak LiveData
nesnelerini kullandınız.
Android Studio projesi: GuessTheWord
- Veri Bağlama Kitaplığı,
ViewModel
veLiveData
gibi Android Mimari Bileşenleri ile sorunsuz çalışır. - Uygulamanızdaki düzenler, Mimari Bileşenlerdeki verilere bağlanabilir. Bu, kullanıcı arayüzü denetleyicisinin yaşam döngüsünü yönetmenize ve verilerdeki değişiklikler hakkında zaten bilgi edinmenize yardımcı olur.
ViewModel veri bağlama
- Veri bağlamayı kullanarak bir
ViewModel
öğesini bir düzenle ilişkilendirebilirsiniz. - Kullanıcı arayüzü verileri
ViewModel
nesnelerinde tutulur.ViewModel
nesnelerini veri bağlamaya ileterek, görünümler ileViewModel
nesneleri arasındaki iletişimin bir kısmını otomatik hale getirebilirsiniz.
ViewModel
öğesini bir düzenle ilişkilendirme:
- Düzen dosyasına,
ViewModel
türünde bir veri bağlama değişkeni ekleyin.
<data>
<variable
name="gameViewModel"
type="com.example.android.guesstheword.screens.game.GameViewModel" />
</data>
GameFragment
dosyasında,GameViewModel
veri aktarımına geçirin.
binding.gameViewModel = viewModel
Dinleyici bağlamaları
- Dinleyici bağlamaları,
onClick()
gibi tıklama etkinlikleri tetiklendiğinde düzenlenen çalışan bağlı ifadelerdir. - Dinleyici bağlantıları lambda ifadesi olarak yazılır.
- Dinleyici bağlamalarını kullanarak, kullanıcı arayüzü denetleyicilerindeki tıklama dinleyicileri düzen dosyasındaki dinleyici bağlamalarıyla değiştirilir.
- Veri bağlama, bir dinleyici oluşturur ve işleyiciyi görünümde ayarlar.
android:onClick="@{() -> gameViewModel.onSkip()}"
Veri bağlamaya LiveData ekleme
LiveData
nesneleri, verilerdeki değişiklikler hakkında kullanıcı arayüzünü otomatik olarak bilgilendirmek için veri bağlama kaynağı olarak kullanılabilir.- Görünümü doğrudan
ViewModel
içindekiLiveData
nesnesine bağlayabilirsiniz.ViewModel
içindekiLiveData
değiştiğinde, düzendeki görünümler, kullanıcı arayüzü denetleyicilerindeki gözlemleyici yöntemleri olmadan otomatik olarak güncellenebilir.
android:text="@{gameViewModel.word}"
LiveData
veri bağlamanın çalışması için mevcut etkinliği (kullanıcı arayüzü denetleyicisi), kullanıcı arayüzü denetleyicisindekibinding
değişkeninin yaşam döngüsü sahibi olarak ayarlayın.
binding.lifecycleOwner = this
Veri bağlama ile dize biçimlendirmesi
- Veri bağlamayı kullanarak bir dize kaynağını dizeler için
%s
ve tam sayılar için%d
gibi yer tutucularla biçimlendirebilirsiniz. - Görünümün
text
özelliğini güncellemek içinLiveData
nesnesini, biçimlendirme dizesinin bağımsız değişkeni olarak iletin.
android:text="@{@string/quote_format(gameViewModel.word)}"
Udacity kursu:
Android geliştirici dokümanları:
Bu bölümde, bir eğitmen tarafından sunulan kurs kapsamında bu codelab üzerinden çalışan öğrenciler için olası ev ödevi ödevleri listelenmektedir. Öğretmenin şunları yapması gerekir:
- Gerekirse ev ödevini atayın.
- Öğrencilere ev ödevlerinin nasıl gönderileceğini bildirin.
- Ev ödevlerine not verin.
Öğretmenler bu önerileri istedikleri kadar kullanabilir veya uygun görebilir ve uygun olan diğer ev ödevlerini atayabilirler.
Bu codelab'de kendiniz çalışıyorsanız, bilginizi test etmek için bu ödevlerden yararlanabilirsiniz.
Bu soruları yanıtlayın
1. Soru
Dinleyici bağlantıları hakkında aşağıdaki ifadelerden hangisi doğru değildir?
- Dinleyici bağlamaları, bir etkinlik gerçekleştiğinde çalıştırılan bağlayıcı ifadelerdir.
- Dinleyici bağlamalar, Android Gradle eklentisinin tüm sürümleriyle çalışır.
- Dinleyici bağlantıları lambda ifadesi olarak yazılır.
- Dinleyici bağlantıları, yöntem referanslarına benzer ancak rastgele veri bağlama ifadeleri çalıştırmanızı sağlar.
2. Soru
Uygulamanızın bu dize kaynağını içerdiğini varsayalım:<string name="generic_name">Hello %s</string>
Veri bağlama ifadesi kullanılarak dizenin biçimlendirilmesi için doğru söz dizimi aşağıdakilerden hangisidir?
android:text= "@{@string/generic_name(user.name)}"
android:text= "@{string/generic_name(user.name)}"
android:text= "@{@generic_name(user.name)}"
android:text= "@{@string/generic_name,user.name}"
3. Soru
Bir işleyici bağlama ifadesi ne zaman değerlendirilir ve çalıştırılır?
LiveData
tarafından tutulan veriler değiştirildiğinde- Bir etkinlik, yapılandırma değişikliği tarafından yeniden oluşturulduğunda
onClick()
gibi bir etkinlik gerçekleştiğinde- Etkinlik arka plana geçtiğinde
Sonraki derse başlayın:
Bu kurstaki diğer codelab'lerin bağlantılarına ulaşmak için Android Kotlin Fundamentals codelabs açılış sayfasına göz atın.