Bu codelab'de, kullanıcıların zar atmak için uygulamadaki Button simgesini tıklayabileceği bir Zar Atma Android uygulaması oluşturacaksınız. Zarın sonucu ekranda TextView içinde gösterilir.
Uygulama düzeninizi oluşturmak için Android Studio'daki Layout Editor'ü kullanacak, ardından Button simgesi tıklandığında ne olacağına dair Kotlin kodu yazacaksınız.
Ön koşullar
- Android Studio'da "Hello, World!" uygulaması oluşturma ve çalıştırma
- Uygulamalarda
TextViewsveImageViewskullanımına aşina olmalısınız. - Düzenleyici'de bir
TextViewöğesinin özelliklerini değiştirme - Uygulamanızı çevirmeyi ve dizeleri yeniden kullanmayı kolaylaştırmak için metni dize kaynağına nasıl ayıklayacağınızı öğrenin.
- Önceki codelab'lerde öğretilen Kotlin programlamanın temelleri.
Neler öğreneceksiniz?
- Android uygulamasına
Buttonekleme - Uygulamada
Buttonsimgesine dokunulduğunda gerçekleşecek davranışı ekleme. - Bir uygulamanın
Activitykodunu açma ve değiştirme Toastmesajı görüntüleme- Uygulama çalışırken
TextViewiçeriğini güncelleme
Ne oluşturacaksınız?
- Zar atmak için
Buttonsimgesine dokunulduğunda zar atan ve ekrandaki metni zar atma sonucuna göre güncelleyen bir Zar Atma Android uygulaması.
İhtiyacınız olanlar
- Android Studio'nun yüklü olduğu bir bilgisayar.
Bu codelab'i tamamladığınızda uygulamanın görünümü aşağıdaki gibi olacaktır.

Boş Etkinlik projesi oluşturma
- Android Studio'da açık bir projeniz varsa Yeni Proje Oluştur ekranını açmak için Dosya > Yeni > Yeni Proje... seçeneğine gidin.
- Create New Project (Yeni Proje Oluştur) bölümünde, Empty Activity (Boş Etkinlik) şablonunu kullanarak yeni bir Kotlin projesi oluşturun.
- Minimum API düzeyi 19 (KitKat) olan "Dice Roller" (Zar Atma) adlı bir uygulama oluşturun.
Önemli: Android Studio'da yeni proje oluşturma konusunda bilginiz yoksa ayrıntılar için İlk Android uygulamanızı oluşturma ve çalıştırma başlıklı makaleyi inceleyin.

- Yeni uygulamayı çalıştırın. Uygulama şu şekilde görünmelidir.

Layout Editor'ü açma
- Proje penceresinde,
activity_main.xml(app > res > layout > activity_main.xml) öğesini çift tıklayarak açın. Uygulamanın ortasında yalnızca "Hello World"TextViewmetninin bulunduğu
Layout Editor'ü (Düzen Düzenleyici) görmelisiniz.
Ardından uygulamanıza bir Button ekleyeceksiniz. Button, Android'de kullanıcının bir işlemi gerçekleştirmek için dokunabileceği bir kullanıcı arayüzü (UI) öğesidir.

Bu görevde, "Hello World" TextView ifadesinin altına Button ekleyeceksiniz. TextView ve Button, ViewGroup türünde olan bir ConstraintLayout içinde yer alır.
ViewGroup içinde Views varsa Views, üst ViewGroup'ün alt öğeleri olarak kabul edilir. Uygulamanızda TextView ve Button, ConstraintLayout üst öğesinin alt öğeleri olarak kabul edilir.


Uygulamanızdaki mevcut ConstraintLayout öğesinin alt öğesi olarak Button eklemeye devam edin.
Düzene düğme ekleme
- Palet'ten bir
Buttonöğesini Tasarım görünümüne sürükleyip "Hello World"TextViewöğesinin altına yerleştirin.
- Bileşen Ağacı'ndaki Palet'in altında,
ButtonveTextViewöğelerininConstraintLayoutaltında (ConstraintLayout'in alt öğeleri olarak) listelendiğini doğrulayın. Buttonöğesinin kısıtlanmadığına dair bir hata bildirimi görürsünüz.Button,ConstraintLayoutiçinde yer aldığından konumlandırmak için dikey ve yatay kısıtlamalar ayarlamanız gerekir.

Düğmeyi yerleştirme
Bu adımda, Button üst kısmından TextView alt kısmına dikey bir kısıtlama ekleyeceksiniz. Bu işlem, Button simgesini TextView simgesinin altına yerleştirir.
- Tasarım görünümünde,
Buttonsimgesinin üst kenarında mavi kenarlıklı beyaz daireyi basılı tutun. İşaretçiyi sürüklediğinizde işaretçiyi bir ok takip eder. "Hello World"TextViewifadesinin alt kenarına ulaştığınızda bırakın. Bu işlem, bir düzen kısıtlaması oluşturur veButton,TextViewöğesinin hemen altına kayar.
- Düzen Düzenleyici'nin sağ tarafındaki Özellikler'e bakın.
- Constraint Widget'ta (Kısıtlama Widget'ı)
TextView'nin en altına ayarlanmış yeni bir düzen kısıtlaması olduğunu fark edeceksiniz: Top → BottomOf textView (0dp). (0dp), 0 kenar boşluğu olduğu anlamına gelir. Ayrıca, eksik yatay kısıtlamalarla ilgili bir hatanız var.
Buttonöğesinin sol tarafından üst öğeninConstraintLayoutsol tarafına yatay bir kısıtlama ekleyin.- Aynı işlemi sağ tarafta tekrarlayarak
Buttonsimgesinin sağ kenarınıConstraintLayoutsimgesinin sağ kenarına bağlayın. Sonuç şu şekilde görünmelidir:

Buttonseçiliyken Constraint Widget şu şekilde görünmelidir. Eklenen iki ek kısıtlamaya dikkat edin: Başlangıç → Üst öğenin başlangıcı (0dp) ve Bitiş → Üst öğenin bitişi (0dp). Bu,Buttonöğesinin üst öğesi olanConstraintLayoutiçinde yatay olarak ortalandığı anlamına gelir.
- Uygulamayı çalıştırın. Aşağıdaki ekran görüntüsüne benzer şekilde görünmelidir.
Buttonsimgesini tıklayabilirsiniz ancak henüz herhangi bir işlem yapılmaz. Devam edelim.

Düğme metnini değiştirme
Layout Editor'da birkaç kullanıcı arayüzü değişikliği daha yapacaksınız.
Button etiketinin "Düğme" olarak gösterilmesi yerine, düğmenin ne yapacağını belirten bir ifadeyle değiştirin: "Zar at".
- Düzen Düzenleyici'de
Buttonseçiliyken Özellikler'e gidin, metni Kaydırma olarak değiştirin veEnter(Mac'teReturn) tuşuna basın.

- Bileşen Ağacı'nda
Button'nin yanında turuncu bir uyarı üçgeni görünür. İşaretçiyi üçgenin üzerine getirdiğinizde bir mesaj gösterilir. Android Studio, uygulama kodunuzda sabit kodlanmış bir dize ("Roll") algıladı ve bunun yerine dize kaynağı kullanmanızı öneriyor.
Dizenin sabit kodlanması, uygulamanın diğer dillere çevrilmesini zorlaştırır ve dizelerin uygulamanızın farklı bölümlerinde yeniden kullanılmasını zorlaştırır. Neyse ki Android Studio, bu sorun için otomatik bir düzeltme sunar.

- Bileşen Ağacı 'nda turuncu üçgeni tıklayın.

Uyarı mesajının tamamı açılır.

- İletinin alt kısmındaki Önerilen Düzeltme bölümünde Düzelt düğmesini tıklayın. (Sayfayı aşağı kaydırmanız gerekebilir.)
- Kaynak Ayıklama iletişim kutusu açılır. Bir dizeyi ayıklamak, "Roll" metnini alıp
strings.xmliçinderolladlı bir dize kaynağı oluşturmak anlamına gelir (app > res > values > strings.xml). Varsayılan değerler doğrudur. Bu nedenle Tamam'ı tıklayın.

- Özellikler bölümünde,
Buttoniçin metin özelliğinin, yeni oluşturduğunuz kaynağı ifade eden@string/rollolarak değiştiğini göreceksiniz.
Tasarım görünümünde, Button simgesinde Kaydır yazmaya devam etmelidir.

TextView'u biçimlendirme
"Hello World!" metni oldukça küçük ve mesaj uygulamanızla alakalı değil. Bu adımda, küçük "Hello, World!" mesajını, yuvarlanmış değeri gösterecek bir sayıyla değiştirecek ve yazı tipini daha büyük hale getireceksiniz. Böylece, mesajı görmek daha kolay olacak.
- Tasarım Düzenleyici'de
TextViewsimgesini seçin. Böylece özellikleri Özellikler penceresinde görünür. TextViewöğesinin textSize özelliğini 36sp olarak değiştirin. Böylece metin büyük ve kolay okunabilir olur. textSize'ı bulmak için ekranı kaydırmanız gerekebilir.

TextViewöğesinin text özelliğini temizleyin. Kullanıcı zar atana kadarTextViewbölümünde herhangi bir şey göstermeniz gerekmez.

Ancak uygulamanızın düzenini ve kodunu düzenlerken TextView içinde bazı metinleri görmek çok faydalıdır. Bu amaçla, TextView içine yalnızca düzen önizlemesi için görünür olan ancak uygulama çalışırken görünmeyen metinler ekleyebilirsiniz.
.
- Bileşen Ağacı'nda
TextViewsimgesini seçin. - Ortak Özellikler bölümünde metin özelliğini ve bunun altında araç simgesiyle birlikte başka bir metin özelliğini bulun. Uygulama çalışırken kullanıcıya gösterilecek olan metin özelliğidir. Araç simgesi içeren metin özelliği, yalnızca geliştirici olarak sizin için olan "araç metni" özelliğidir.
TextViewbölümünde araç metnini "1" olarak ayarlayın (1 zar attığınızı varsaymak için). "1" yalnızca Android Studio'daki Tasarım Düzenleyici'de görünür ancak uygulamayı gerçek bir cihazda veya emülatörde çalıştırdığınızda görünmez.

Bu metin yalnızca uygulama geliştiriciler tarafından görüntülendiği için bunun için dize kaynağı oluşturmanız gerekmez.
- Önizlemede uygulamanıza bakın. "1" gösteriliyor.

- Uygulamanızı çalıştırın. Uygulama, emülatörde çalıştırıldığında aşağıdaki gibi görünür. "1" gösterilmiyor. Bu, doğru davranıştır.

Harika, düzen değişikliklerini tamamladınız.
Düğmesi olan bir uygulamanız var ancak düğmeye dokunduğunuzda hiçbir şey olmuyor. Bunu değiştirmek için zarları atan ve düğmeye dokunulduğunda ekranı güncelleyen bir Kotlin kodu yazmanız gerekir.
Bu değişikliği yapabilmek için Android uygulamalarının yapısı hakkında biraz daha bilgi sahibi olmanız gerekir.
Bir Activity, uygulamanızın kullanıcı arayüzünü çizdiği pencereyi sağlar. Genellikle bir Activity, çalışan uygulamanızın tüm ekranını kaplar. Her uygulamanın bir veya daha fazla etkinliği vardır. Üst düzey veya ilk etkinlik genellikle MainActivity olarak adlandırılır ve proje şablonu tarafından sağlanır. Örneğin, kullanıcı cihazındaki uygulamalar listesinde gezinip "Zar Atma" uygulama simgesine dokunduğunda Android Sistemi, uygulamanın MainActivity başlatır.
MainActivity kodunuzda, Activity'nin düzeni ve kullanıcının bu öğeyle nasıl etkileşimde bulunması gerektiği hakkında ayrıntılı bilgi vermeniz gerekir.
- Doğum Günü Kartı uygulamasında, doğum günü mesajını ve resmini gösteren bir
Activitybulunur. - Zar Atma uygulamasında, yeni oluşturduğunuz
TextViewveButtondüzenini gösteren birActivitybulunur.
Daha karmaşık uygulamalarda birden fazla ekran ve birden fazla Activity olabilir. Her Activity belirli bir amaca hizmet eder.
Örneğin, bir fotoğraf galerisi uygulamasında, fotoğraf ızgarasını görüntülemek için bir Activity, tek bir fotoğrafı görüntülemek için ikinci bir Activity ve tek bir fotoğrafı düzenlemek için üçüncü bir Activity olabilir.

MainActivity.kt dosyasını açın.
MainActivity içinde bir düğmeye dokunmaya yanıt verecek kodu ekleyeceksiniz. Bunu doğru şekilde yapabilmek için MainActivity uygulamanızda zaten bulunan kod hakkında daha fazla bilgi edinmeniz gerekir.
MainActivity.ktdosyasını (app > java > com.example.diceroller > MainActivity.kt) bulup açın. Aşağıdaki ekranı görmeniz gerekir.import...simgesini görürseniz içe aktarılanları genişletmek için...simgesini tıklayın.
package com.example.diceroller
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}Yukarıdaki kodun her kelimesini anlamanız gerekmez ancak ne işe yaradığı hakkında genel bir fikriniz olmalıdır. Android koduyla ne kadar çok çalışırsanız koda o kadar aşina olur ve kodu o kadar iyi anlarsınız.
MainActivitysınıfının Kotlin koduna bakın. Bu sınıf,classanahtar kelimesi ve ardından adıyla tanımlanır.
class MainActivity : AppCompatActivity() {
...
}MainActivityiçindemain()işlevi olmadığını fark edin.
Daha önce, her Kotlin programında birmain()işlevi olması gerektiğini öğrenmiştiniz. Android uygulamaları farklı şekilde çalışır. Android sistemi,main()işlevini çağırmak yerine uygulamanız ilk kez açıldığındaMainActivityöğenizinonCreate()yöntemini çağırır.- Aşağıdaki koda benzeyen
onCreate()yöntemini bulun.
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}override hakkında daha sonraki bir codelab'de bilgi edineceksiniz (bu nedenle şimdilik endişelenmeyin). onCreate() yönteminin geri kalanı, içe aktarmalardan gelen kodu kullanarak MainActivity öğesini ayarlar ve başlangıç düzenini setContentView() ile belirler.
importile başlayan satırlara dikkat edin.
Android, Android uygulamaları yazmayı kolaylaştırmak için çok sayıda sınıfın çerçevesini sağlar ancak hangi sınıfı kastettiğinizi tam olarak bilmesi gerekir. import ifadesini kullanarak kodunuzda çerçevedeki hangi sınıfın kullanılacağını belirtebilirsiniz. Örneğin, Button sınıfı android.widget.Button içinde tanımlanır.
Otomatik içe aktarmayı etkinleştirme
Daha fazla sınıf kullandığınızda import ifadelerini eklemeyi hatırlamak çok fazla iş gerektirebilir. Neyse ki Android Studio, başkaları tarafından sağlanan sınıfları kullanırken doğru içe aktarmaları seçmenize yardımcı olur. Bu adımda, Android Studio'yu mümkün olduğunda içe aktarmaları otomatik olarak ekleyecek ve kullanılmayan içe aktarmaları kodunuzdan otomatik olarak kaldıracak şekilde yapılandıracaksınız.
- Android Studio'da File > Other Settings > Preferences for New Projects (Dosya > Diğer Ayarlar > Yeni Projeler İçin Tercihler) seçeneğine giderek ayarları açın.
- Diğer Ayarlar > Otomatik İçe Aktarma'yı genişletin. Java ve Kotlin bölümlerinde Add unambiguous imports on the fly (Belirsiz olmayan içe aktarma işlemlerini anında ekle) ve Optimize imports on the fly (for current project) (İçe aktarma işlemlerini anında optimize et (mevcut proje için)) seçeneklerinin işaretli olduğundan emin olun. Her bölümde iki onay kutusu olduğunu unutmayın.

Net olmayan içe aktarmalar ayarları, Android Studio'ya hangi içe aktarma ifadesinin kullanılacağını belirleyebildiği sürece otomatik olarak içe aktarma ifadesi eklemesini söyler. optimize imports (içeri aktarmaları optimize et) ayarları, Android Studio'ya kodunuz tarafından kullanılmayan tüm içe aktarmaları kaldırmasını söyler. - Tamam'a basarak değişiklikleri kaydedin ve ayarları kapatın.
MainActivity hakkında biraz daha bilgi edindiğinize göre artık uygulamayı, Button simgesini tıkladığınızda ekranda bir işlem yapılacak şekilde değiştirebilirsiniz.
Düğme tıklandığında mesaj gösterme
Bu adımda, düğme tıklandığında ekranın alt kısmında kısa bir mesaj gösterileceğini belirteceksiniz.

onCreate()yönteminesetContentView()çağrısından sonra aşağıdaki kodu ekleyin.findViewById()yöntemi, düzendekiButtonöğesini bulur.R.id.button,Buttoniçin kaynak kimliğidir. Bu,Button'nın benzersiz tanımlayıcısıdır. Kod,Buttonnesnesinin kendisini değil,rollButtonadlı bir değişkendeButtonnesnesine bir referans kaydeder.
val rollButton: Button = findViewById(R.id.button)Kod, Button nesnesinin kendisini değil, Button nesnesine yapılan referansı rollButton adlı bir değişkene kaydeder.
onCreate() yöntemi artık aşağıdaki gibi görünmelidir.
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val rollButton: Button = findViewById(R.id.button)
}- Android Studio'nun
importiçin otomatik olarak birButtonifadesi eklediğini doğrulayın.
Artık 3 import ifadesi olduğunu göreceksiniz. Üçüncüsü otomatik olarak eklenmiştir.
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.ButtonArdından, Button simgesine dokunulduğunda kodun yürütülebilmesi için kodu Button ile ilişkilendirmeniz gerekir. Tıklama işleyici, dokunma veya tıklama gerçekleştiğinde ne yapılacağını belirten bir koddur. Bu kodu, kullanıcının tıklamasını (bu örnekte Button) bekleyen bir kod olarak düşünebilirsiniz.
rollButtonnesnesini kullanın vesetOnClickListener()yöntemini çağırarak nesneye bir tıklama dinleyicisi ayarlayın.
rollButton.setOnClickListener {
}
Yazarken Android Studio birden fazla öneri gösterebilir. Bu durumda setOnClickListener {...} seçeneğini belirleyin.

Küme parantezleri içine, düğmeye dokunulduğunda ne olacağına dair talimatlar girersiniz. Şimdilik uygulamanızda, kullanıcıya gösterilen kısa bir mesaj olan Toast görüntülenir.
Toast.makeText()numarasını arayarak"Dice Rolled!"metnini içeren birToastoluşturun.
val toast = Toast.makeText(this, "Dice Rolled!", Toast.LENGTH_SHORT)- Ardından,
Toastyöntemini çağırarakToastöğesinin kendisini göstermesini söyleyin.show()
toast.show()Güncellenen MainActivity sınıfınız aşağıdaki gibi görünür. package ve import ifadeleri dosyanın en üstünde yer almaya devam eder:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val rollButton: Button = findViewById(R.id.button)
rollButton.setOnClickListener {
val toast = Toast.makeText(this, "Dice Rolled!", Toast.LENGTH_SHORT)
toast.show()
}
}
}Tıklama işleyicisindeki iki satırı değişken içermeyen tek bir satırda birleştirebilirsiniz. Bu, diğer kodlarda da görebileceğiniz yaygın bir kalıptır.
Toast.makeText(this, "Dice Rolled!", Toast.LENGTH_SHORT).show()- Uygulamayı çalıştırın ve Roll (Rulo) düğmesini tıklayın. Ekranın alt kısmında kısa süre sonra kaybolacak bir pop-up mesaj gösterilir.

Yaşasın! Düğme tıklanınca mesaj açıldı. Android için ilk kez Kotlin kodu yazdınız.
Düğme tıklandığında TextView'ı güncelleme
Geçici bir Toast mesajı göstermek yerine, Rulo düğmesi tıklandığında ekrandaki TextView öğesini güncelleyecek kodu yazacaksınız.
activity_main.xml'ya (app > res > layout >activity_main.xml) geri dönün.TextViewsimgesini tıklayın.- id'nin textView olduğunu unutmayın.

MainActivity.ktdosyasını açın (app > java > com.example.diceroller > MainActivity.kt)Toastsimgesini oluşturan ve gösteren kod satırlarını silin.
rollButton.setOnClickListener {
}- Bunların yerine,
TextViewdeğerini depolamak içinresultTextViewadlı yeni bir değişken oluşturun. findViewById()kullanarak düzen içinde kimliğiyletextViewöğesini bulun ve buna referans depolayın.
val resultTextView: TextView = findViewById(R.id.textView)resultTextViewüzerindeki metni tırnak içinde "6" olarak ayarlayın.
resultTextView.text = "6"Bu, Özellikler'de metni ayarlayarak yaptığınıza benzer. Ancak şimdi kodunuzda olduğundan metnin çift tırnak içinde olması gerekir. Bu değeri açıkça ayarlamak, şimdilik TextView değerinin her zaman 6 olacağı anlamına gelir. Bir sonraki görevde, zar atmak ve farklı değerler göstermek için kodu ekleyeceksiniz.
MainActivity sınıfı şu şekilde görünmelidir:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val rollButton: Button = findViewById(R.id.button)
rollButton.setOnClickListener {
val resultTextView: TextView = findViewById(R.id.textView)
resultTextView.text = "6"
}
}
}- Uygulamayı çalıştırın. Düğmeyi tıklayın.
TextViewdeğerini "6" olarak güncellemelidir.

Eksik olan tek şey zar atmak. Bir zar atma mantığını işleyen önceki kod laboratuvarındaki Dice sınıfını yeniden kullanabilirsiniz.
Dice sınıfını ekleme
MainActivitysınıfındaki son küme parantezinden sonra,roll()yöntemiyleDicesınıfını oluşturun.
class Dice(val numSides: Int) {
fun roll(): Int {
return (1..numSides).random()
}
}- Android Studio'nun
numSideskarakterinin altını dalgalı gri bir çizgiyle çizdiğini fark edin. (Bu işlem biraz zaman alabilir.) - İşaretçinizi
numSidessimgesinin üzerine getirdiğinizde Property 'numSides' could be private (numSides özelliği özel olabilir) yazan bir pop-up gösterilir.
numSides adlı öğeyi private olarak işaretlediğinizde bu öğeye yalnızca Dice sınıfında erişilebilir. numSides öğesini kullanacak tek kod Dice sınıfının içinde olduğundan, Dice sınıfı için bu bağımsız değişkeni private olarak ayarlayabilirsiniz. Sonraki ünitede private ve public değişkenleri hakkında daha fazla bilgi edineceksiniz.
- Make 'numSides' 'private' seçeneğini tıklayarak Android Studio'da önerilen düzeltmeyi yapın.
rollDice() yöntemi oluşturma
Uygulamanıza Dice sınıfını eklediğinize göre, bu sınıfı kullanmak için MainActivity sınıfını güncelleyeceksiniz. Kodunuzu daha iyi düzenlemek için zar atma ile ilgili tüm mantığı tek bir işlevde toplayın.
- Metni "6" olarak ayarlayan tıklama işleyicisindeki kodu
rollDice()çağrısıyla değiştirin.
rollButton.setOnClickListener {
rollDice()
}rollDice()henüz tanımlanmadığı için Android Studio bir hata bildirir verollDice()öğesini kırmızı renkte gösterir.- İşaretçinizi
rollDice()simgesinin üzerine getirdiğinizde Android Studio, sorunu ve olası çözümleri gösterir.

- Diğer işlemler... seçeneğini tıklayın. Bir menü açılır. Android Studio, sizin için daha fazla iş yapmayı teklif ediyor.

- Create function 'rollDice' (İşlev oluşturma "rollDice") seçeneğini belirleyin. Android Studio,
MainActivityiçinde işlev için boş bir tanım oluşturur.
private fun rollDice() {
TODO("Not yet implemented")
}Yeni bir Dice nesne örneği oluşturma
Bu adımda, rollDice() yönteminin zar oluşturup atmasını ve sonucu TextView içinde göstermesini sağlayacaksınız.
rollDice()içindeTODO()görüşmesini silin.- 6 yüzlü bir zar oluşturmak için kod ekleyin.
val dice = Dice(6)roll()yöntemini çağırarak zar atın ve sonucudiceRolladlı bir değişkene kaydedin.
val diceRoll = dice.roll()TextViewsimgesini bulmak içinfindViewById()numaralı telefonu arayın.
val resultTextView: TextView = findViewById(R.id.textView)diceRoll değişkeni bir sayıdır ancak TextView metin kullanır. toString() yöntemini diceRoll üzerinde kullanarak bunu dizeye dönüştürebilirsiniz.
diceRollöğesini dizeye dönüştürün veresultTextViewöğesinin metnini güncellemek için bu dizeyi kullanın.
resultTextView.text = diceRoll.toString()rollDice() yöntemi şu şekilde görünür:
private fun rollDice() {
val dice = Dice(6)
val diceRoll = dice.roll()
val resultTextView: TextView = findViewById(R.id.textView)
resultTextView.text = diceRoll.toString()
}- Uygulamanızı çalıştırın. Zar sonucu 6 dışında başka değerlere değişmelidir. 1 ile 6 arasında rastgele bir sayı olduğundan bazen 6 değeri de görünebilir.

Harikasınız!
Uygulamanızın çalışması için bazı kısımlarda ince ayarlar yaptıktan sonra kodunuzun biraz karışık görünmesi normaldir. Ancak kodunuzdan ayrılmadan önce bazı kolay temizleme görevlerini yapmanız gerekir. Böylece uygulama iyi durumda olur ve ileride bakımı daha kolay yapılır.
Bu alışkanlıklar, profesyonel Android geliştiricilerin kodlarını yazarken uyguladığı alışkanlıklardır.
Android Stil Kılavuzu
Ekiplerle çalışırken ekip üyelerinin kodu benzer şekilde yazması, kodun tutarlı olması açısından idealdir. Bu nedenle Android'de Android kodu yazmayla ilgili bir Stil Kılavuzu vardır. Bu kılavuzda adlandırma kuralları, biçimlendirme ve diğer iyi uygulamalar yer alır. Android kodu yazarken şu yönergelere uyun: Android Geliştiriciler İçin Kotlin Stil Kılavuzu.
Stil kılavuzuna uymanın birkaç yolunu aşağıda bulabilirsiniz.
Kodunuzu temizleme
Kodunuzu yoğunlaştırma
Kodu daha az satırda yazarak kodunuzu daha kısa hale getirebilirsiniz. Örneğin, tıklama işleyicisini Button üzerinde ayarlayan kodu burada bulabilirsiniz.
rollButton.setOnClickListener {
rollDice()
}Tıklama dinleyicisiyle ilgili talimatlar yalnızca 1 satır uzunluğunda olduğundan rollDice() yöntem çağrısını ve küme parantezlerini tek bir satırda birleştirebilirsiniz. Bu şekilde görünür. Üç satır yerine tek satır!
rollButton.setOnClickListener { rollDice() }Kodunuzu yeniden biçimlendirme
Şimdi kodunuzu, Android için önerilen kod biçimlendirme kurallarına uyacak şekilde yeniden biçimlendireceksiniz.
MainActivity.ktsınıfında, Windows'daControl+A(veya Mac'teCommand+A) klavye kısayolunu kullanarak dosyadaki tüm metni seçin. Alternatif olarak, Android Studio'da Edit > Select All (Düzenle > Tümünü Seç) menüsüne gidebilirsiniz.- Dosyadaki tüm metin seçiliyken Android Studio menüsünde Code > Reformat Code (Kod > Kodu Yeniden Biçimlendir) seçeneğine gidin veya
Ctrl+Alt+L(Mac'teCommand+Option+L) klavye kısayolunu kullanın.
Boşluk ve girinti gibi kodunuzun biçimlendirmesini günceller. Herhangi bir değişiklik görmeyebilirsiniz. Bu durumda sorun yoktur. Kodunuz zaten doğru biçimlendirilmiş demektir.
Kodunuza yorum ekleme
Yazdığınız kodda neler olduğunu açıklamak için kodunuza bazı yorumlar ekleyin. Kod daha karmaşık hale geldikçe, kodu neden bu şekilde yazdığınızı da belirtmeniz önemlidir. Daha sonra değişiklik yapmak için koda geri dönerseniz kodun ne yaptığı hâlâ net olabilir ancak kodu neden bu şekilde yazdığınızı hatırlamayabilirsiniz.
Her sınıf (MainActivity ve Dice, uygulamanızdaki tek sınıflardır) ve yazdığınız her yöntem için yorum eklemek yaygın bir uygulamadır. Bunun kod olmadığını sisteme bildirmek için yorumunuzun başında ve sonunda /** ve **/ sembollerini kullanın. Bu satırlar, sistem kodunuzu çalıştırırken yoksayılır.
Bir sınıfla ilgili yorum örneği:
/**
* This activity allows the user to roll a dice and view the result
* on the screen.
*/
class MainActivity : AppCompatActivity() {Bir yöntemle ilgili yorum örneği:
/**
* Roll the dice and update the screen with the result.
*/
private fun rollDice() {Bir yöntem içinde, kodunuzu okuyacak kişiye yardımcı olacağını düşünüyorsanız yorum ekleyebilirsiniz. Yorumunuzun başında // sembolünü kullanabileceğinizi unutmayın. Bir satırda // simgesinden sonra gelen her şey yorum olarak kabul edilir.
Bir yöntem içinde 2 yorum örneği:
private fun rollDice() {
// Create new Dice object with 6 sides and roll it
val dice = Dice(6)
val diceRoll = dice.roll()
// Update the screen with the dice roll
val resultTextView: TextView = findViewById(R.id.textView)
resultTextView.text = diceRoll.toString()
}- Kodunuza yorum eklemek için biraz zaman ayırın.
- Yorum ve biçimlendirme ile ilgili tüm bu değişikliklerden sonra, uygulamanızın beklendiği gibi çalışmaya devam ettiğinden emin olmak için uygulamayı tekrar çalıştırmanız iyi bir uygulamadır.
Kodunuza yorum eklemenin bir yolu için çözüm koduna bakın.
Bu codelab'in çözüm kodu, aşağıda gösterilen proje ve modülde yer alır.
Bu codelab'in kodunu GitHub'dan almak ve Android Studio'da açmak için aşağıdakileri yapın.
- Android Studio'yu başlatın.
- Welcome to Android Studio (Android Studio'ya Hoş Geldiniz) penceresinde Check out project from version control'u (Projeyi sürüm kontrolünden kullanıma alma) tıklayın.
- Git'i seçin.
- Clone Repository (Depoyu Klonla) iletişim kutusunda, sağlanan kod URL'sini URL kutusuna yapıştırın.
- Test düğmesini tıklayın, bekleyin ve Bağlantı başarılı yazan yeşil bir pop-up balon olduğundan emin olun.
- İsteğe bağlı olarak, Dizin'i önerilen varsayılandan farklı bir şeyle değiştirin.
- Klonla'yı tıklayın. Android Studio, kodunuzu getirmeye başlar.
- Checkout from Version Control (Sürüm Kontrolünden Ödeme) pop-up'ında Yes'i (Evet) tıklayın.
- Android Studio'nun açılmasını bekleyin.
- Codelab başlangıç veya çözüm kodunuz için doğru modülü seçin.
- Kodunuzu oluşturup çalıştırmak için Çalıştır düğmesini
tıklayın.
- Düzen Düzenleyici'yi kullanarak Android uygulamasına
Buttonekleyin. - Uygulamaya etkileşimli davranış eklemek için
MainActivity.ktsınıfını değiştirin. - Doğru yolda olduğunuzu doğrulamak için geçici bir çözüm olarak
Toastmesajı gösterin. Buttontıklandığında davranış eklemek içinsetOnClickListener()kullanarakButtoniçin bir tıklama işleyici ayarlayın.- Uygulama çalışırken düzen içindeki
TextView,Buttonveya diğer kullanıcı arayüzü öğelerinde yöntemleri çağırarak ekranı güncelleyebilirsiniz. - Kodunuzu okuyan diğer kişilerin yaklaşımınızı anlamasına yardımcı olmak için kodunuza yorum ekleyin.
- Kodunuzu yeniden biçimlendirin ve temizleyin.
ButtonsınıfıToastsınıfıTextViewsınıfı- Android Geliştiriciler için Kotlin Stil Kılavuzu
Aşağıdakileri yapın:
- Uygulamaya başka bir zar ekleyin. Roll (Zar at) düğmesini tıkladığınızda 2 zar atılmalıdır. Sonuçlar ekranda 2 farklı
TextViewsolarak gösterilmelidir.
Çalışmanızı kontrol etme:
Tamamlanan uygulamanız hatasız çalışmalı ve uygulamada iki zar göstermelidir.