پشته های متعدد پشتیبان را پشتیبانی کنید

مؤلفه ناوبری با سیستم عامل Android کار می کند تا هنگام حرکت کاربر در برنامه شما ، پشته پشتی را حفظ کند. در برخی موارد، حفظ چندین پشته به طور همزمان، با حرکت کاربر بین آنها به عقب و جلو ممکن است مفید باشد. به عنوان مثال، اگر برنامه شما دارای پیمایش پایین یا یک کشوی پیمایش است ، پشتیبانی از پشته چندگانه به کاربران شما امکان می‌دهد آزادانه بین جریان‌های برنامه شما جابه‌جا شوند بدون اینکه جایگاه خود را در هیچ یک از آنها از دست بدهند.

مؤلفه Navigation APIهایی را ارائه می دهد که با ذخیره و بازیابی وضعیت مقصدها در نمودار پیمایش شما، از چندین پشته پشتیبان پشتیبانی می کند. کلاس NavigationUI شامل روش‌هایی است که به طور خودکار این کار را انجام می‌دهند، اما می‌توانید از APIهای زیربنایی به صورت دستی برای پیاده‌سازی سفارشی‌تر استفاده کنید.

با NavigationUI پشتیبانی را به صورت خودکار اجرا کنید

کلاس NavigationUI شامل API هایی است که به طور خودکار وضعیت آیتم های منو را با حرکت کاربر بین آنها ذخیره و بازیابی می کنند. این APIها به طور پیش‌فرض در موارد زیر پشتیبانی پشته‌های چندگانه را پیاده‌سازی می‌کنند:

این APIها برای اجرای پشتیبانی از پشته های چندگانه نیازی به تغییر کد بیشتری ندارند و روش توصیه شده برای پشتیبانی از پشته های چندگانه در برنامه شما هستند.

پشتیبانی را به صورت دستی با APIهای اساسی پیاده سازی کنید

اگر عناصر ارائه شده توسط NavigationUI نیازهای شما را برآورده نمی کند، می توانید از API های زیرین برای ذخیره و بازیابی پشته های پشته از طریق یکی از سطوح API دیگر ارائه شده توسط مؤلفه Navigation استفاده کنید.

در 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 به شما این امکان را می دهد که گزینه های پیمایش ویژه ای را برای ذخیره و بازیابی پشته های پشته در هنگام پیمایش با استفاده از 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، به منابع اضافی زیر مراجعه کنید:

پست های وبلاگ

نمونه ها