একাধিক ব্যাক স্ট্যাক কাজ করে

ব্যবহারকারী আপনার অ্যাপে নেভিগেট করার সময় ব্যাক স্ট্যাক বজায় রাখতে, নেভিগেশন কম্পোনেন্ট Android অপারেটিং সিস্টেমের সাথে কাজ করে। কিছু ক্ষেত্রে, একই সময়ে একাধিক ব্যাক স্ট্যাক বজায় রাখা সহায়ক হতে পারে, যার মধ্যে ব্যবহারকারী আগে ও পরে যেতে পারেন। যেমন, আপনার অ্যাপে নিচের দিকে নেভিগেশন বা নেভিগেশন ড্রয়ার থাকলে, একাধিক ব্যাক স্ট্যাক সাপোর্ট আপনার ব্যবহারকারীদের অ্যাপের মধ্যে বিভিন্ন ফ্লোতে অবাধে পাল্টাতে দেয় এবং এর ফলে কোনও ফ্লোতে তাদের জায়গা হারিয়ে যায় না।

নেভিগেশন কম্পোনেন্ট API প্রদান করে যা আপনার নেভিগেশন গ্রাফে গন্তব্যের অবস্থা সেভ ও রিস্টোর করার মাধ্যমে একাধিক ব্যাক স্ট্যাককে সাপোর্ট করে। NavigationUI ক্লাসে এমন পদ্ধতি অন্তর্ভুক্ত আছে যা এটি অটোমেটিক ম্যানেজ করে, তবে আরও কাস্টমাইজ করা ইমপ্লিমেন্টেশনের জন্য আপনি অন্তর্নিহিত API ম্যানুয়ালি ব্যবহার করতে পারেন।

NavigationUI-এর মাধ্যমে অটোমেটিক সহায়তা প্রয়োগ করা

NavigationUI ক্লাসে এমন API অন্তর্ভুক্ত থাকে যা ব্যবহারকারী মেনু আইটেমের মধ্যে ঘোরাফেরা করার সময় অটোমেটিক সেগুলির স্ট্যাটাস সেভ ও রিস্টোর করে। এইসব API নিম্নলিখিত ক্ষেত্রে ডিফল্ট হিসেবে একাধিক ব্যাক স্ট্যাক সাপোর্ট প্রয়োগ করে:

একাধিক ব্যাক স্ট্যাক সাপোর্ট প্রয়োগ করার জন্য এই API-তে আর কোনও কোড পরিবর্তন করার প্রয়োজন নেই এবং আপনার অ্যাপে একাধিক ব্যাক স্ট্যাক সাপোর্ট করার জন্য এটিই সাজেস্ট করা পদ্ধতি।

অন্তর্নিহিত API-এর মাধ্যমে ম্যানুয়ালি সহায়তা প্রয়োগ করা

NavigationUI-এর দেওয়া এলিমেন্ট আপনার প্রয়োজন পূরণ করতে না পারলে, আপনি নেভিগেশন কম্পোনেন্টের দেওয়া অন্য API সারফেসের মাধ্যমে ব্যাক স্ট্যাক সেভ ও রিস্টোর করার জন্য আন্ডারলাইং API ব্যবহার করতে পারবেন।

নেভিগেশন XML-এ, আপনার নেভিগেশন গ্রাফে <action> এলিমেন্ট app:popUpToSaveState অ্যাট্রিবিউট ব্যবহার করে যেকোনও গন্তব্যের স্ট্যাটাস সেভ করতে পারে যা app:popUpTo ব্যবহার করে অ্যাকশন পপ-আপ করেছে। এছাড়াও, app:destination অ্যাট্রিবিউটে উল্লেখ করা গন্তব্যের জন্য আগে সেভ করা কোনও স্ট্যাটাস রিস্টোর করতে, তারা app:restoreState অ্যাট্রিবিউট ব্যবহার করতে পারে।

একাধিক ব্যাক স্ট্যাকের জন্য আপনি এইসব অ্যাট্রিবিউট ব্যবহার করতে পারবেন। নেভিগেশন অ্যাকশনের মাধ্যমে ব্যবহারকারীকে একটি ব্যাক স্ট্যাক থেকে অন্যটিতে নিয়ে যেতে হলে, সংশ্লিষ্ট <action> এলিমেন্টে app:popUpToSaveState ও app:restoreState, দুটিকেই 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 ব্যবহার করে নেভিগেট করার সময় ব্যাক স্ট্যাক সেভ এবং রিস্টোর করতে পারেন। আপনি Kotlin DSL বা NavOptions.Builder ব্যবহার করে NavOptions-এর ইনস্ট্যান্স তৈরি করলে এটি প্রযোজ্য হয়:

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
  }
}

জাভা

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 প্রয়োগ করুন দেখুন।

অতিরিক্ত রিসোর্স

নেভিগেশন কম্পোনেন্টের সাথে একাধিক ব্যাক স্ট্যাক সাপোর্ট সম্পর্কে আরও জানতে, নিম্নলিখিত অতিরিক্ত রিসোর্স দেখুন:

ব্লগ পোস্ট

নমুনা