Android Navigation -Kotlin
Herkese Selamlar, Bu gün sizlere Android Jetpack öğesi olan Navigation’u anlatmaya çalışacağım. Umarım faydalı olur şimdiden iyi okumalar.
Android içerisinde çeşitli arayüzler arasında geçiş işlemleri ve veri taşıma işlemlerini daha iyi yönetebildiğimiz bir yapı gibi düşünebiliriz. Daha öncesinde bu işlemler için Intent kullanılıyordu fakat Jetpack kütüphanelerinden olan Navigation ile bu işlemler hem daha pratik hem de daha eğlenceli olabilmektedir.
Navigation Companent 3 Ana Bölümden Oluşur;
NavGraph : Tasarladığımız Fragment ve Activity tasarımlarını görselleştirebildiğimiz ve sayfalar arası geçişi kontrol edebildiğimiz xml sayfasıdır. Genellikle Fragment’lar ile kullanılır.
NavHost : Oluşturulan NavGraph’ı kullanacak olan Companentin adıdır. Bu companenti Activity içerisine ekler, NavGrap içerisindeki yönlendirmeleri görüntüleriz.
NavController : Sayfalar arası geçişleri yöneten bir nesne olarak ifade edilebilir. Bizler navGrap içerisinde sürükle bırak ile sayfalar arası geçişleri tanımlarken bu geçişleri yönetir ve düzenler.
Navigation’un bizlere sağladığı bir çok avantajdan bazılarını ifade edecek olursak;
- Fragment yönlendirmeleri
- Varsayılan olarak doğru bir şekilde geriye kullanım
- Animasyonlar ve geçişler
- NavigationDrawer ve NavBottom menülerinde ki otomatik fragment geçişleri
- SafeArgs ile sayfalar arası güvenli veri aktarımı
- Uygulama içerisinde ki geçişleri görselleştirme
Not : Android Studio içerisinde Navigation kullanmak için, Adroid Studio sürümünün 3.3 ve üzeri olması gerekmektedir.
Hadi gelin bir uygulama üzerinden konuyu daha iyi anlayalım.
Gradle işlemlerimizi yaparak başlayalım.
Build.Gradle(app)
apply plugin: "androidx.navigation.safeargs.kotlin"def nav_version = "2.3.0"
implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
Build.Gradle(Project)
def nav_version = "2.3.0"
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
Fragment
Uygulamamız için 3 adet Fragment oluşturacağız. Arayüz tasarımlarınızı genelde Fragment üzerinden yapmaya özen gösteriniz. Bu kullanım bizlere performans gibi çeşitli avantajlar sağlayacaktır.
NavGraph
res
klasörüne sağ tıklayıpnew resource file
deyip yeni xml ekliyoruz. Type kısmınınavigation
olarak ayarlıyoruz. Açılan pencereden Ekle simgesi ile oluşturduğumuz fragment veya activityleri ekrana alıyoruz. Fragment’lar arası geçişi oklar yardımıyla ayarlayabilirsiniz.
3 numaralı belirtilen alandan fragment içerisine arguments ekleyebilirsiniz. Bu sekme içerisinden değişkenin adını, türünü, default value, nullable, array gibi ifadelendirmelerde bulunabilirsiniz.
Eğer fragment tan geri tuşu ile dönülmesini istemiyorsak. Sağ üstten Code kısmına geçip action tag’leri arasına app:popUpTo=”@id/dashboardFragment”
kodunu eklemeniz yeterli olacaktır.
app:popUpToInclusive=”true”
NavHost
activity_xml
içerisin den navHostFragment
component’ini ekliyoruz. Bu aşamada oluşturulan navigation graph’lar listeleniyor. Birden fazla navigation graph varsa ilgili navigation graphı seçiyoruz.
Bu işlem adımlarından sonra projenizi Rebuild etmenizi tavsiye ederim. Çünkü Directions ve arguments class’ları oluşturulmayabilir.
DashboardFragment
Profile ve Chatbox fragmentlarına yönlendirme işlemlerini tanımlıyoruz. Chatbox fragment, arguments tanımlaması yapıtığımız için gönderilecek değeri de belirtmemiz gerekli.
ChatboxFragment
arguments ile gönderilen verilerin değişken atamalarını gerçekleştiriyoruz.
Jetpack kütüphanelerinden olan Navigation’ı anlatmaya çalıştım umarım faydalı olabilmiştir. Uygulamayı incelemek isterseniz bağlantıdan ulaşabilirsiniz. Keyifli Günler…