مؤلفه ناوبری با سیستم عامل Android کار می کند تا هنگام حرکت کاربر در برنامه شما ، پشته پشتی را حفظ کند. در برخی موارد، حفظ چندین پشته به طور همزمان، با حرکت کاربر بین آنها به عقب و جلو ممکن است مفید باشد. به عنوان مثال، اگر برنامه شما دارای پیمایش پایین یا یک کشوی پیمایش است ، پشتیبانی از پشته چندگانه به کاربران شما امکان میدهد آزادانه بین جریانهای برنامه شما جابهجا شوند بدون اینکه جایگاه خود را در هیچ یک از آنها از دست بدهند.
مؤلفه Navigation APIهایی را ارائه می دهد که با ذخیره و بازیابی وضعیت مقصدها در نمودار پیمایش شما، از چندین پشته پشتیبان پشتیبانی می کند. کلاس NavigationUI
شامل روشهایی است که به طور خودکار این کار را انجام میدهند، اما میتوانید از APIهای زیربنایی به صورت دستی برای پیادهسازی سفارشیتر استفاده کنید.
با NavigationUI پشتیبانی را به صورت خودکار اجرا کنید
کلاس NavigationUI
شامل API هایی است که به طور خودکار وضعیت آیتم های منو را با حرکت کاربر بین آنها ذخیره و بازیابی می کنند. این APIها به طور پیشفرض در موارد زیر پشتیبانی پشتههای چندگانه را پیادهسازی میکنند:
- هنگامی که از اضافه بار مناسب
setupWithNavController()
برای مرتبط کردن یک نمونه ازNavigationView
یاBottomNavigationView
با یک نمونهNavController
استفاده می کنید، همانطور که در Add a navigation drawer یا Bottom navigation توضیح داده شده است. - هنگامی که از
onNavDestinationSelected()
برای ایجاد یک رابط کاربری منوی پیمایش سفارشی مرتبط با مقاصدی که توسط یک نمونهNavController
میزبانی می شوند، استفاده می کنید.
این APIها برای اجرای پشتیبانی از پشته های چندگانه نیازی به تغییر کد بیشتری ندارند و روش توصیه شده برای پشتیبانی از پشته های چندگانه در برنامه شما هستند.
پشتیبانی را به صورت دستی با APIهای اساسی پیاده سازی کنید
اگر عناصر ارائه شده توسط NavigationUI
نیازهای شما را برآورده نمی کند، می توانید از API های زیرین برای ذخیره و بازیابی پشته های پشته از طریق یکی از سطوح API دیگر ارائه شده توسط مؤلفه Navigation استفاده کنید.
XML ناوبری
در Navigation XML، عناصر <action>
در نمودار پیمایش شما می توانند از ویژگی app:popUpToSaveState
برای ذخیره وضعیت هر مقصدی که عملکرد با استفاده از app:popUpTo
ظاهر شده است استفاده کند. آنها همچنین می توانند از ویژگی app:restoreState
برای بازیابی هر حالت ذخیره شده قبلی برای مقصد تعریف شده در ویژگی app:destination
استفاده کنند.
میتوانید از این ویژگیها برای پشتیبانی از پشتههای چندگانه استفاده کنید. هنگامی که یک اقدام ناوبری نیاز به انتقال کاربر از یک پشته به پشته دیگر دارد، هر دو app:popUpToSaveState
و app:restoreState
در عنصر <action>
مربوطه روی true
تنظیم کنید. به این ترتیب، این اکشن وضعیت پشته برگشتی فعلی را ذخیره میکند و در صورت وجود، وضعیت ذخیره شده قبلی پشته مقصد را نیز بازیابی میکند.
مثال زیر عملی را نشان می دهد که از هر دوی این ویژگی ها استفاده می کند:
<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
کلاس NavOptions
به شما این امکان را می دهد که گزینه های پیمایش ویژه ای را برای ذخیره و بازیابی پشته های پشته در هنگام پیمایش با استفاده از NavController
ارسال کنید. این درست است چه شما نمونه NavOptions
خود را با استفاده از Kotlin DSL یا با استفاده از NavOptions.Builder
ایجاد کنید:
کاتلین
// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.findStartDestination().id) { saveState = true } }
جاوا
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);
برای کسب اطلاعات بیشتر در مورد انتقال گزینههای پیمایش، به اعمال برنامهنویسی NavOptions مراجعه کنید.
منابع اضافی
برای کسب اطلاعات بیشتر در مورد پشتیبانی پشته چندگانه با مؤلفه Navigation، به منابع اضافی زیر مراجعه کنید:
پست های وبلاگ
- مهارت های MAD: پیمایش چند پشته پشتی در Medium
- پیمایش: چند پشته پشته شیرجه عمیق در Medium
نمونه ها
- اکنون در برنامه اندروید در GitHub
- Jetnews در GitHub
- Jetsnack در GitHub