ব্যবহারকারী আপনার অ্যাপে নেভিগেট করার সময় ব্যাক স্ট্যাক বজায় রাখতে, নেভিগেশন কম্পোনেন্ট Android অপারেটিং সিস্টেমের সাথে কাজ করে। কিছু ক্ষেত্রে, একই সময়ে একাধিক ব্যাক স্ট্যাক বজায় রাখা সহায়ক হতে পারে, যার মধ্যে ব্যবহারকারী আগে ও পরে যেতে পারেন। যেমন, আপনার অ্যাপে নিচের দিকে নেভিগেশন বা নেভিগেশন ড্রয়ার থাকলে, একাধিক ব্যাক স্ট্যাক সাপোর্ট আপনার ব্যবহারকারীদের অ্যাপের মধ্যে বিভিন্ন ফ্লোতে অবাধে পাল্টাতে দেয় এবং এর ফলে কোনও ফ্লোতে তাদের জায়গা হারিয়ে যায় না।
নেভিগেশন কম্পোনেন্ট API প্রদান করে যা আপনার নেভিগেশন
গ্রাফে গন্তব্যের অবস্থা সেভ ও রিস্টোর করার মাধ্যমে একাধিক ব্যাক স্ট্যাককে সাপোর্ট করে। NavigationUI ক্লাসে এমন পদ্ধতি অন্তর্ভুক্ত আছে যা এটি অটোমেটিক ম্যানেজ করে, তবে আরও কাস্টমাইজ করা ইমপ্লিমেন্টেশনের জন্য আপনি অন্তর্নিহিত API ম্যানুয়ালি ব্যবহার করতে পারেন।
NavigationUI-এর মাধ্যমে অটোমেটিক সহায়তা প্রয়োগ করা
NavigationUI ক্লাসে
এমন API অন্তর্ভুক্ত থাকে যা ব্যবহারকারী মেনু আইটেমের মধ্যে ঘোরাফেরা করার সময় অটোমেটিক
সেগুলির স্ট্যাটাস সেভ ও রিস্টোর করে। এইসব API নিম্নলিখিত ক্ষেত্রে ডিফল্ট হিসেবে একাধিক ব্যাক স্ট্যাক সাপোর্ট
প্রয়োগ করে:
- নেভিগেশন ড্রয়ার
যোগ করুন বা নিচের দিকে
নেভিগেশন-এ যেভাবে বর্ণনা করা হয়েছে, সেই অনুযায়ী
NavigationViewবাBottomNavigationView-এর ইনস্ট্যান্সকেNavControllerইনস্ট্যান্সের সাথে যুক্ত করতেsetupWithNavController()-এর উপযুক্ত ওভারলোড ব্যবহার করলে। NavControllerইনস্ট্যান্সের হোস্ট করা গন্তব্যের সাথে যুক্ত কাস্টম নেভিগেশন মেনু UI তৈরি করতেonNavDestinationSelected()ব্যবহার করার সময়।
একাধিক ব্যাক স্ট্যাক সাপোর্ট প্রয়োগ করার জন্য এই API-তে আর কোনও কোড পরিবর্তন করার প্রয়োজন নেই এবং আপনার অ্যাপে একাধিক ব্যাক স্ট্যাক সাপোর্ট করার জন্য এটিই সাজেস্ট করা পদ্ধতি।
অন্তর্নিহিত API-এর মাধ্যমে ম্যানুয়ালি সহায়তা প্রয়োগ করা
NavigationUI-এর দেওয়া এলিমেন্ট আপনার প্রয়োজন পূরণ করতে না পারলে, আপনি নেভিগেশন কম্পোনেন্টের দেওয়া অন্য API সারফেসের মাধ্যমে ব্যাক স্ট্যাক সেভ ও রিস্টোর করার জন্য
আন্ডারলাইং API ব্যবহার করতে পারবেন।
নেভিগেশন XML
নেভিগেশন 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
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 প্রয়োগ করুন দেখুন।
অতিরিক্ত রিসোর্স
নেভিগেশন কম্পোনেন্টের সাথে একাধিক ব্যাক স্ট্যাক সাপোর্ট সম্পর্কে আরও জানতে, নিম্নলিখিত অতিরিক্ত রিসোর্স দেখুন:
ব্লগ পোস্ট
- MAD Skills: Navigation multiple back stacks on Medium
- নেভিগেশন: একাধিক ব্যাক স্ট্যাকের গভীর বিশ্লেষণ Medium-এ
নমুনা
- GitHub-এ Now in Android অ্যাপ
- GitHub-এ Jetnews
- GitHub-এ Jetsnack