پشتیبانی از چند پشته قبلی‌ها

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

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

پیاده‌سازی خودکار پشتیبانی با NavigationUI

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

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

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

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

در 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 به‌صورت برنامه‌نویسی مراجعه کنید.

منابع بیشتر

برای کسب اطلاعات بیشتر درباره پشتیبانی از پشته قبلی‌ها چندگانه با مؤلفه «پیمایش»، منابع اضافی زیر را ببینید:

پست‌های وبلاگ

نمونه‌ها