Android Navigation Component Nedir?

Şeyma Nur Fırat
3 min readNov 9, 2021

--

Herkese merhaba!

Navigation kelime anlamı, navigasyon, gezinme anlamlarına geliyor. Peki androidde bu ne işimize yarayacak? Hep beraber bakalım!

Navigation, kullanıcıların uygulama içerisinde hareketlerini rahatlıkla kontrol edebilmesini sağlar. Sayfalar arası geçişlerini kolaylaştırır. Peki biz bunları daha farklı şekilde kontrol edemez miydik? Navigation componenti bize ne tür kolaylıklar sağlıyor bir bakalım. Navigation, uygulama içerisinde nereden nereye gidilecek ve bunların arasında nasıl bağlantılar var, görsel ve daha kolay bir şekilde halletmemize yarayan bir componenttir.

Navigation Component, üç önemli bölümden oluşur:

  1. Navigation Graph: Navigation ile ilgili bilgileri içeren XML kaynağıdır. Yani kullanıcıların izleyebileceği olası yollar burada bulunur.
  2. NavHost: Navigation graphtaki hedefleri görüntüleyen boş bir kapsayıcıdır.
  3. NavController: NavHost içerisindeki uygulama gezinmelerini yöneten bir nesnedir. NavController daha sonra NavHost’a uygun hedefi gösterir.

Teorik kısmı bittiğine göre beraber bir örnek yapalım.

Öncelikle projemizde build.gradle(Module:app) dosyasına gerekli dependenciesleri ekleyerek başlıyoruz🚀

Build.gradle(Project:app) dosyasına da gerekli dependenciesleri ekliyoruz.

Artık hazırız.

Şimdi iki adet Fragment oluşturuyoruz.

Projede dosyalar şu şekilde olmalıdır:

Şimdi navigation graphı ekleme zamanı geldi!

res klasöründe sağ tıklayıp, New Android Resource File seçiyoruz.

Navigation Graph Oluşturma

Navigation graphımızı oluşturmuş olduk. Şimdi ise hangi ekranları eklemek istediğimizi seçiyoruz. Burada eklemiş olduğumuz fragmentleri görüyoruz.

Ekranları seçtikten sonra aralarındaki ilişkiyi oklar yardımı ile belirliyoruz.

Navigation graphımız hazır! Şimdi activity_main.xml dosyamıza gidip NavHostFragmentimizi tanımlayalım. NavHostFragment ekleyip içerisine navigation graphımızı ekliyoruz.

Artık kodlamaya başlayabiliriz!

İlk önce first fragmente geliyoruz. Butona tıkladığımızda bizi second fragmente götürmesini istediğimiz için butona bir tıklanma aksiyonu vermemiz gerekiyor. onCreateView metodunu override edip butona setOnClickListener veriyoruz.

İlk önce bir aksiyon oluşturuyoruz. Daha sonra navigation componentinin bizim için hazır oluşturduğu sınıfları çağırıyoruz.

Her NavHost’un bir NavController’ı vardır geçişleri o yönetir. findNavController() ile navControllera ulaştıktan sonra navigate() metodu ile gitmek istediğimiz fragmente gidebiliriz.

Uygulamamız şuan first fragmentten second fragmente başarılı bir şekilde geçiş yapıyor. Second fragmentten first fragmente geçiş yapması için aynı işlemleri tekrarlıyoruz.

Uygulamamızın çıktısına bakalım.

Başarılı bir şekilde ekranlar arası geçişi sağlayabiliyoruz.

Navigation componenti tercih etmemizin bir sebebi de ekranlar arası veri aktarımını çok kolay bir şekilde gerçekleştirmesidir.

First fragmentte bir kullanıcı adı olduğunu varsayalım. Bunun için navigation graphımıza geliyoruz ve Second Fragmente argument ekliyoruz.

FirstFragmente gidip actionFirstFragmentToSecondFragment() içerisinde username bilgisini girmemiz gerekiyor.

SecondFragmentte bu veriyi alabilmek içinse;

Ekranlar arası veri aktarımını başarılı bir şekilde gerçekleştirmiş olduk.

Projenin bitmiş haline buradan ulaşabilirsiniz.

İlk yazım olan Navigation Component konusunu anlatmaya çalıştım, geri bildirimlerinizi bekliyorum. Umarım faydalı olmuştur, herkese bugsuz günler diliyorum👩🏻‍💻

--

--

Responses (2)