Android Navigation Component

Ali Göktaş
3 min readJan 1, 2021

Merhaba. Bu yazımda sizlere Jetpack’le gelen bir component olan Navigation’dan bahsedeceğim.

Navigation

Navigation component aslında bir varış noktası kavramıdır. Varış noktası (destination) ise uygulamada gitmek istenilen herhangi bir yerdir. Bu yer genellikle bir fragment veya activity’dir.

Navigationla beraber hayatımıza Navigation Graph, NavHost ve NavController gibi kavramlar girdi. Şimdi gelin beraber bu kavramların ne olduğuna bakalım.

👉 Navigation Graph: Kullanıcının uygulamada gidebileceği tüm olası destination’ları gösteren bir grafiktir.

👉 NavHost: Navigation Grap’taki destination’ların gösterileceği boş bir container’dır.

👉 NavController: Uygulamadaki NavHost içinde bulunan destination’ları yöneten bi nesnedir.

Bu kavramları da öğrendiğimize göre haydi projemize Navigation implement edelim.

Navigation Implementation

1- Öncelikle dependency’lerimizi ekleyelim. Güncel haline buradan ulaşabilirsiniz.

2- Daha sonra uygulamamıza iki tane boş fragment ekliyoruz. Ben FirstFragment ve SecondFragment diye iki tane ekledim. Sonra xml’lerin içini doldurdum.

FirstFragment.xml 👇

3- Şimdi bir Navigation Graph oluşturalım. Resources->New-> AndroidResourceFile seçiyoruz. Resource type kısmında ise Navigation seçiyoruz. Böylece Navigation Graph’ımız oluşmuş oldu.

Navigation Oluşturma

4- Artık Main Activity’mizi NavHost yapabiliriz. Bunun için activity_main.xml file’ımıza NavHost ekliyoruz.

5- Navigation Graph’tan ise fragmentlarımızı ekliyoruz. Fragmentları ekledikten sonra FirstFragmenttan SecondFragmenta gideceğimizi göstermek için action’ımuzu ekliyoruz

Fragmentları ve action’ı eklemek

6- En son olarak artık First Fragmenttaki butona tıklandığında Second Fragmenta gitmesi için aksiyon yazacağız.

Şu anda uygulamızda butona tıklandığında 2.fragmenta geçiyor.

Navigationla aynı zamanda veri taşıma da yapabiliyoruz. Şimdi uygulamamız üzerinden devam ederek Navigationla nasıl veri taşınıyor ona bakalım.

Navigation ile Veri Taşıma

Data Göndermek

Data taşımak için safeargs eklentisini eklememiz gerekiyor. Güncel haline buradan erişebilirsiniz.

1- Öncelikle bir data classı oluşturuyoruz. Bu classta, isim ve soyisim bilgileri yer alacak. 2. fragmenta giderken bu bilgilerin taşınmasını istiyorum.

Data classımız:

Not: Veri taşımak için Parcelable yöntemini seçtim.

2- Daha sonra Navigation Graph üzerinden Second Fragmentımızı seçtikten sonra (nereye data taşıyacaksak o tarafı seçiyoruz) sol tarafta bulununan Attributes kısmından Arguments’i seçiyoruz. Buraya göndereceğimiz ismi ve hangi tipte göndereceğimizi belirtiyoruz. Daha sonra hangi classı göndereceğimizi seçiyoruz.

Data Class Ekleme
Gönderilecek olan Data Class

3- Projemizi cleand and rebuild yaptıktan sonra action’ımız bir parametre isteyecek. Buraya ise biraz önce Argument eklerken oluşturduğumuz name’i veriyoruz. (yani burada information). Böylelikle data classımız gitmeye hazır.

Datalarımızı taşıdık. Şimdiyse bu dataları diğer fragmentta nasıl alacağız ona bir bakalım.

Data Karşılama

1- Data class’ımın tipinde bir değişken oluşturuyorum.

2- Verilerimizi arguments içinden alıyoruz. Arguments nullable olduğu için let ile kontrolunu yaptım. myName değişkenimizi SecondFragmentArgs sınıfımızdan fromBundle diyerek information’a eşitliyoruz.

Son olarakta myName diyerek data classımızın içerisinde olan field’lara erişip onları kullanabiliyoruz.

İşte Navigation ile uygulama içinde dolaşmak ve veri taşımak bu kadar kolay.

Bir sonraki yazımda görüşmek üzere…

Yararlandığım kaynak:

https://developer.android.com/guide/navigation/navigation-getting-started

--

--