02 numaralı dersimizde Destinations ve actions ifadelerini sıklıkla duyacağımızı söylemiştik. Şimdi bir hedef alanını belirten destination'ların anatomisine bir göz atalım.
İncelememize başlamak için şimdiye kadar Navigation Graph ve NavHostFragment eklediğimiz projemize artık bir Destination eklemenin vakti geldi.
Bunun için nav_graph.xml dosyamızın dizayn bölümünü aşağıdaki gibi açalım.
nav_graph.xml
Bu ekranda "New Destination" butonuna basarak,
Create new destination penceresi
Açılan yukarıdaki pencerede "Create new destination" seçeneğini işaretleyelim. Karşımıza aşağıdaki gibi yeni bir fragment oluşturma penceresi açılacaktır. Gerekli isimlendirmeleri verip, Finish butonuna basalım.
Yeni fragment oluşturma penceresi
Bu adımı tamamladığımızda artık aşağıdaki gibi yeni bir destination'ımız hazır duruma gelecektir.
blankFragment isimli yeni destination'umuz
nav_graph.xml’in dizayn bölümündeki Attribute’ler alanında 4 attribute (öznitelik) bulunur.
Type alanı destination’a bir fragment, activity veya custom bir class uygulanıp uygulanmadığını gösterir. Şu anda bir Fragment eklediğimiz için Type, Fragment olarak görünmekte.
Label alanı, hedefin XML layout dosyasının adını içerir.
ID alanı, hedefin kimliğini belirtir.
Class alanı, hedefle ilişkilendirilmiş sınıfın adını gösterir. Bizim örneğimize göre bu class adı aşağıdaki gibi olacaktır.
com.etiya.jpnavigation1.BlankFragment
nav_graph.xml'in metin bölümü ise aşağıdaki gibi oluşacaktır.
Burada app:startDestination="@id/blankFragment" şeklinde belirtilen startDestination alanı uygulama açıldığında kullanıcıları ilk karşılayan ve uygulamadan çıkmadan önce görecekleri son ekranı belirtir. XML dizayn sayfasında aşağıdaki gibi ev simgesi ile gösterilir.
startDestination'a sahip blankFragment
Yer tutucu (Placeholder) hedefleri
Aşağıdaki görselde de gördüğü gibi yeni bir destination oluşturma ekranındaki placeholder seçeneği dikkatinizi çekmiş olmalı.
Placeholder
Placeholder'ları, uygulanmayan hedefleri temsil etmek için kullanabilirsiniz. Yer tutucu (placeholder) bir hedefin görsel bir temsili olarak hizmet eder. Navigation Editor’de, yer tutucuları diğer herhangi bir hedef gibi kullanabilirsiniz.