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:
- Gezinme çekmecesi ekleme veya Altta gezinme konusunda açıklandığı gibi, bir
NavigationView
veyaBottomNavigationView
örneğini birNavController
örneğiyle ilişkilendirmek için uygun aşırısetupWithNavController()
kullandığınızda. NavController
örneği tarafından barındırılan hedeflere bağlı bir özel gezinme menüsü kullanıcı arayüzü oluşturmak içinonNavDestinationSelected()
kullandığınızda.
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.
Gezinme XML'si
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” />
GezinmeSeçenekleri
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ı
- MAD Becerileri: Medium'da çoklu arka yığınlarda gezinme
- Gezinme: Medium'da Multiple Back Stacks'ın ayrıntılı incelemesi
Sana Özel
- Now in Android uygulaması GitHub'da
- GitHub'da Jetnews
- GitHub'da Jetsnack