নিরাপদ Args

গন্তব্যের মধ্যে নেভিগেট করার প্রস্তাবিত উপায় হল নিরাপদ আর্গস গ্রেডল প্লাগইন ব্যবহার করা। এই প্লাগইনটি অবজেক্ট এবং বিল্ডার ক্লাস তৈরি করে যা গন্তব্যের মধ্যে টাইপ-নিরাপদ নেভিগেশন সক্ষম করে। গন্তব্যের মধ্যে নেভিগেট এবং ডেটা পাস করার জন্য নিরাপদ আর্গস ব্যবহার করুন।

নিরাপদ Args সক্ষম করুন

আপনার প্রোজেক্টে সেফ আর্গ যোগ করতে, আপনার টপ লেভেল build.gradle ফাইলে নিম্নলিখিত classpath অন্তর্ভুক্ত করুন:

খাঁজকাটা

buildscript {
    repositories {
        google()
    }
    dependencies {
        def nav_version = "2.9.7"
        classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
    }
}

কোটলিন

buildscript {
    repositories {
        google()
    }
    dependencies {
        val nav_version = "2.9.7"
        classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version")
    }
}

আপনাকে দুটি উপলব্ধ প্লাগইনের মধ্যে একটি প্রয়োগ করতে হবে।

জাভা বা মিশ্র জাভা এবং কোটলিন মডিউলের জন্য উপযুক্ত জাভা ভাষা কোড তৈরি করতে, আপনার অ্যাপ বা মডিউলের build.gradle ফাইলে এই লাইনটি যোগ করুন:

খাঁজকাটা

plugins {
  id 'androidx.navigation.safeargs'
}

কোটলিন

plugins {
    id("androidx.navigation.safeargs")
}

বিকল্পভাবে, শুধুমাত্র কোটলিন মডিউলের জন্য উপযুক্ত কোটলিন কোড তৈরি করতে যোগ করুন:

খাঁজকাটা

plugins {
  id 'androidx.navigation.safeargs.kotlin'
}

কোটলিন

plugins {
    id("androidx.navigation.safeargs.kotlin")
}

Migrating to AndroidX অনুসারে আপনার gradle.properties ফাইলে android.useAndroidX=true থাকতে হবে।

জেনারেটেড কোড

সেফ আর্গস সক্ষম করার পরে, আপনার তৈরি করা কোডে আপনার সংজ্ঞায়িত প্রতিটি ক্রিয়াকলাপের জন্য ক্লাস এবং পদ্ধতি রয়েছে এবং সেই সাথে প্রতিটি প্রেরণ এবং গ্রহণের গন্তব্যের সাথে সঙ্গতিপূর্ণ ক্লাস রয়েছে৷

সেফ আর্গস প্রতিটি গন্তব্যের জন্য একটি ক্লাস তৈরি করে যেখানে একটি ক্রিয়া উৎপন্ন হয়। জেনারেট করা ক্লাসের নামটি উদ্ভূত গন্তব্য শ্রেণীর নামের সাথে "নির্দেশ" যোগ করে। উদাহরণস্বরূপ, যদি উদ্ভূত গন্তব্যটির নাম হয় SpecifyAmountFragment , জেনারেট করা ক্লাসের নাম SpecifyAmountFragmentDirections

উৎপন্ন শ্রেণীতে মূল গন্তব্যে সংজ্ঞায়িত প্রতিটি কর্মের জন্য একটি স্ট্যাটিক পদ্ধতি রয়েছে। এই পদ্ধতিটি যেকোনো সংজ্ঞায়িত অ্যাকশন প্যারামিটারকে আর্গুমেন্ট হিসেবে নেয় এবং একটি NavDirections অবজেক্ট রিটার্ন করে যা আপনি navigate() করতে সরাসরি পাস করতে পারেন।

নিরাপদ Args উদাহরণ

উদাহরণস্বরূপ, একটি একক ক্রিয়া সহ একটি নেভিগেশন গ্রাফ বিবেচনা করুন যা দুটি গন্তব্যকে সংযুক্ত করে, SpecifyAmountFragment এবং ConfirmationFragmentConfirmationFragment একটি একক float প্যারামিটার নেয় যা আপনি কর্মের অংশ হিসাবে প্রদান করেন।

Safe Args একটি একক পদ্ধতি, actionSpecifyAmountFragmentToConfirmationFragment() , এবং ActionSpecifyAmountFragmentToConfirmationFragment নামে একটি অভ্যন্তরীণ শ্রেণী সহ একটি SpecifyAmountFragmentDirections শ্রেণী তৈরি করে। অভ্যন্তরীণ শ্রেণীটি NavDirections থেকে প্রাপ্ত এবং সংশ্লিষ্ট অ্যাকশন আইডি এবং float প্যারামিটার সংরক্ষণ করে। প্রত্যাবর্তিত NavDirections অবজেক্টটি তারপর সরাসরি navigate() এ পাস করা যেতে পারে, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

কোটলিন

override fun onClick(v: View) {
    val amount: Float = ...
    val action =
        SpecifyAmountFragmentDirections
            .actionSpecifyAmountFragmentToConfirmationFragment(amount)
    v.findNavController().navigate(action)
}

জাভা

@Override
public void onClick(View view) {
    float amount = ...;
    action =
        SpecifyAmountFragmentDirections
            .actionSpecifyAmountFragmentToConfirmationFragment(amount);
    Navigation.findNavController(view).navigate(action);
}

সেফ আর্গস দিয়ে গন্তব্যগুলির মধ্যে ডেটা পাস করার বিষয়ে আরও তথ্যের জন্য, টাইপ নিরাপত্তা সহ ডেটা পাস করতে সেফ আর্গস ব্যবহার করুন দেখুন।

Safe Args ব্যবহার করে টাইপ নিরাপত্তা নিশ্চিত করুন

Safe Args Gradle প্লাগইন ব্যবহার করে গন্তব্যের মধ্যে নেভিগেট করুন। এই প্লাগইনটি সাধারণ অবজেক্ট এবং বিল্ডার ক্লাস তৈরি করে যা গন্তব্যের মধ্যে টাইপ-সেফ নেভিগেশন এবং আর্গুমেন্ট পাসিং সক্ষম করে।

আপনার প্রোজেক্টে সেফ আর্গ যোগ করতে, আপনার টপ লেভেল build.gradle ফাইলে নিম্নলিখিত classpath অন্তর্ভুক্ত করুন:

খাঁজকাটা

buildscript {
    repositories {
        google()
    }
    dependencies {
        def nav_version = "2.9.7"
        classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
    }
}

কোটলিন

buildscript {
    repositories {
        google()
    }
    dependencies {
        val nav_version = "2.9.7"
        classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version")
    }
}

আপনাকে দুটি উপলব্ধ প্লাগইনের মধ্যে একটি প্রয়োগ করতে হবে।

জাভা বা মিশ্র জাভা এবং কোটলিন মডিউলের জন্য উপযুক্ত জাভা ভাষা কোড তৈরি করতে, আপনার অ্যাপ বা মডিউলের build.gradle ফাইলে এই লাইনটি যোগ করুন:

খাঁজকাটা

plugins {
  id 'androidx.navigation.safeargs'
}

কোটলিন

plugins {
    id("androidx.navigation.safeargs")
}

বিকল্পভাবে, শুধুমাত্র কোটলিন মডিউলের জন্য উপযুক্ত কোটলিন কোড তৈরি করতে যোগ করুন:

খাঁজকাটা

plugins {
  id 'androidx.navigation.safeargs.kotlin'
}

কোটলিন

plugins {
    id("androidx.navigation.safeargs.kotlin")
}

Migrating to AndroidX অনুসারে আপনার gradle.properties ফাইলে android.useAndroidX=true থাকতে হবে।

আপনি নিরাপদ আর্গস সক্ষম করার পরে, প্লাগইন কোড তৈরি করে যাতে আপনার সংজ্ঞায়িত প্রতিটি কর্মের জন্য ক্লাস এবং পদ্ধতি থাকে। প্রতিটি কর্মের জন্য, সেফ আর্গস প্রতিটি উদ্ভূত গন্তব্যের জন্য একটি শ্রেণীও তৈরি করে, যেটি সেই গন্তব্য যেখান থেকে ক্রিয়াটির উৎপত্তি হয়। জেনারেট করা ক্লাসের নাম হল উদ্ভূত গন্তব্য শ্রেণীর নাম এবং "নির্দেশ" শব্দের সংমিশ্রণ। উদাহরণস্বরূপ, যদি গন্তব্যটির নাম হয় SpecifyAmountFragment , জেনারেট করা ক্লাসের নাম SpecifyAmountFragmentDirections । উৎপন্ন শ্রেণীতে মূল গন্তব্যে সংজ্ঞায়িত প্রতিটি কর্মের জন্য একটি স্ট্যাটিক পদ্ধতি রয়েছে। এই পদ্ধতিটি যেকোনো সংজ্ঞায়িত অ্যাকশন প্যারামিটারকে আর্গুমেন্ট হিসেবে নেয় এবং একটি NavDirections অবজেক্ট রিটার্ন করে যা আপনি navigate() করতে পাস করতে পারেন।

একটি উদাহরণ হিসাবে, ধরে নিন আমাদের কাছে একটি একক ক্রিয়া সহ একটি নেভিগেশন গ্রাফ রয়েছে যা মূল গন্তব্য, SpecifyAmountFragment , একটি গ্রহণকারী গন্তব্য, ConfirmationFragment সাথে সংযোগ করে।

নিরাপদ আর্গস একটি একক পদ্ধতি, actionSpecifyAmountFragmentToConfirmationFragment() সহ একটি SpecifyAmountFragmentDirections ক্লাস তৈরি করে, যা একটি NavDirections অবজেক্ট প্রদান করে। এই ফেরত দেওয়া NavDirections অবজেক্টটি তারপর সরাসরি navigate() এ পাস করা যেতে পারে, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

কোটলিন

override fun onClick(view: View) {
    val action =
        SpecifyAmountFragmentDirections
            .actionSpecifyAmountFragmentToConfirmationFragment()
    view.findNavController().navigate(action)
}

জাভা

@Override
public void onClick(View view) {
    NavDirections action =
        SpecifyAmountFragmentDirections
            .actionSpecifyAmountFragmentToConfirmationFragment();
    Navigation.findNavController(view).navigate(action);
}

সেফ আর্গস দিয়ে গন্তব্যগুলির মধ্যে ডেটা পাস করার বিষয়ে আরও তথ্যের জন্য, গন্তব্যগুলির মধ্যে পাস ডেটাতে টাইপ নিরাপত্তা সহ ডেটা পাস করতে সেফ আর্গস ব্যবহার করুন দেখুন৷