Birden çok arka yığın yığınını destekleme

Gezinme bileşeni, Android işletim sistemiyle birlikte çalışarak kullanıcı uygulamanızda gezinirken arka yığını korur. Bazı durumlarda, kullanıcı bu öğeler arasında ileri geri hareket ederken aynı anda birden fazla arka yığını bulundurmak yararlı olabilir. Örneğin, uygulamanızda altta gezinme veya gezinme çekmecesi bulunuyorsa çoklu arka yığın desteği, kullanıcılarınızın hiçbirindeki yerleri kaybetmeden uygulamanızdaki akışlar arasında serbestçe geçiş yapmasına olanak tanır.

Gezinme bileşeni, gezinme grafiğinizdeki hedeflerin durumunu kaydedip geri yükleyerek çoklu arka yığınları destekleyen API'ler sağlar. NavigationUI sınıfı, bunu otomatik olarak işleyen yöntemler içerir ancak daha özelleştirilmiş bir uygulama için temel API'leri manuel olarak da kullanabilirsiniz.

NavigationUI ile desteği otomatik olarak uygulayın

NavigationUI sınıfı, kullanıcı bunlar arasında geçiş yaparken menü öğelerinin durumunu otomatik olarak kaydeden ve geri yükleyen API'leri içerir. Bu API'ler aşağıdaki durumlarda varsayılan olarak birden çok arka yığın desteği uygular:

Bu API'ler, birden fazla arka yığın desteği uygulamak için başka kod değişikliği gerektirmez ve uygulamanızda birden fazla arka yığını desteklemek için önerilen yöntemdir.

Temel API'lerle desteği manuel olarak uygulayın

NavigationUI tarafından sağlanan öğeler gereksinimlerinizi karşılamıyorsa Gezinme bileşeni tarafından sağlanan diğer API yüzeylerinden biri üzerinden yığınları kaydetmek ve geri yüklemek için temel API'leri kullanabilirsiniz.

Navigasyon XML'de, gezinme grafiğinizdeki <action> öğeleri, işlemin app:popUpTo kullanılarak oluşturulduğu tüm hedeflerin durumunu kaydetmek için app:popUpToSaveState özelliğini kullanabilir. Ayrıca, app:destination özelliğinde tanımlanan hedefin önceden kaydedilmiş durumlarını geri yüklemek için app:restoreState özelliğini de kullanabilirler.

Birden fazla arka grubu desteklemek için bu özellikleri kullanabilirsiniz. Bir gezinme işleminin kullanıcıyı bir geri yığından diğerine taşıması gerektiğinde hem app:popUpToSaveState hem de app:restoreState öğelerini karşılık gelen <action> öğesinde true olarak ayarlayın. Bu şekilde işlem, mevcut arka yığının durumunu kaydederken hedef geri yığınının (varsa) daha önce kaydedilmiş durumunu geri yükler.

Aşağıdaki örnekte bu özelliklerin ikisinin de kullanıldığı bir işlem gösterilmektedir:

<action
  android:id=”@+id/swap_stack”
  app:destination=”@id/second_stack”
  app:restoreState=”true”
  app:popUpTo=”@id/first_stack_start_destination”
  app:popUpToSaveState=”true” />

NavOptions sınıfı, NavController kullanarak gezindiğinizde yığınları kaydetmek ve geri yüklemek için özel gezinme seçeneklerini geçmenize olanak tanır. NavOptions örneğinizi KotlinDSL veya NavOptions.Builder kullanarak oluşturduğunuzda da bu durum geçerlidir:

Kotlin

// Use the navigate() method that takes a navOptions DSL Builder
navController.navigate(selectedBottomNavRoute) {
  launchSingleTop = true
  restoreState = true
  popUpTo(navController.graph.findStartDestination().id) {
    saveState = true
  }
}

Java

NavOptions navOptions = new NavOptions.Builder()
  .setLaunchSingleTop(true)
  .setRestoreState(true)
  .setPopUpTo(NavGraph.findStartDestination(navController.getGraph()).getId(),
    false, // inclusive
    true) // saveState
  .build();
navController.navigate(selectedBottomNavId, null, navOptions);

Gezinme seçeneklerini geçirme hakkında daha fazla bilgi edinmek için NavOptions'ı programatik olarak uygulama konusuna bakın.

Ek kaynaklar

Gezinme bileşeniyle çoklu arka yığın desteği hakkında daha fazla bilgi edinmek için aşağıdaki ek kaynaklara bakın:

Blog yayınları

Sana Özel