কর্ম যোগ করুন এবং পরিচালনা করুন

অ্যাপ বার আপনাকে ব্যবহারকারীর কর্মের জন্য বোতাম যোগ করতে দেয়। এই বৈশিষ্ট্যটি আপনাকে বর্তমান প্রেক্ষাপটের জন্য সবচেয়ে গুরুত্বপূর্ণ অ্যাকশনগুলিকে অ্যাপের শীর্ষে রাখতে দেয়। উদাহরণস্বরূপ, একটি ফটো ব্রাউজিং অ্যাপ শেয়ার দেখাতে পারে এবং ব্যবহারকারী যখন তাদের ফটো রোলটি দেখছে তখন শীর্ষে অ্যালবাম বোতাম তৈরি করতে পারে । যখন ব্যবহারকারী একটি পৃথক ফটো দেখেন, অ্যাপটি ক্রপ এবং ফিল্টার বোতামগুলি দেখাতে পারে।

অ্যাপ বারে স্থান সীমিত। যদি কোনো অ্যাপ অ্যাপ বারে ফিট করার চেয়ে বেশি অ্যাকশন ঘোষণা করে, অ্যাপ বার অতিরিক্ত অ্যাকশনকে ওভারফ্লো মেনুতে পাঠায়। অ্যাপটি নির্দিষ্ট করতে পারে যে একটি অ্যাকশন সবসময় অ্যাপ বারে দেখানোর পরিবর্তে ওভারফ্লো মেনুতে দেখায়।

একটি অ্যাকশন বার আইকন সহ Android অ্যাপে Now দেখানো একটি চিত্র৷
চিত্র 1. "Now in Android" অ্যাপে একটি অ্যাকশন আইকন।

অ্যাকশন বোতাম যোগ করুন

অ্যাকশন ওভারফ্লোতে উপলব্ধ সমস্ত অ্যাকশন বোতাম এবং অন্যান্য আইটেমগুলি একটি XML মেনু সংস্থানে সংজ্ঞায়িত করা হয়েছে৷ অ্যাকশন বারে অ্যাকশন যোগ করতে, আপনার প্রোজেক্টের res/menu/ ডিরেক্টরিতে একটি নতুন XML ফাইল তৈরি করুন।

প্রতিটি আইটেমের জন্য একটি <item> উপাদান যোগ করুন যা আপনি অ্যাকশন বারে অন্তর্ভুক্ত করতে চান, যেমনটি নিম্নলিখিত নমুনা মেনু XML ফাইলে দেখানো হয়েছে:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto">

    <!-- "Mark Favorite", must appear as action button if possible. -->
    <item
        android:id="@+id/action_favorite"
        android:icon="@drawable/ic_favorite_black_48dp"
        android:title="@string/action_favorite"
        app:showAsAction="ifRoom"/>

    <!-- Settings, must always be in the overflow. -->
    <item android:id="@+id/action_settings"
          android:title="@string/action_settings"
          app:showAsAction="never"/>

</menu>

app:showAsAction বৈশিষ্ট্যটি নির্দিষ্ট করে যে অ্যাকশনটি অ্যাপ বারে একটি বোতাম হিসেবে দেখানো হয়েছে কিনা। আপনি যদি app:showAsAction="ifRoom" সেট করেন — উদাহরণ কোডের পছন্দের অ্যাকশনের মতো — অ্যাপ বারে এটির জন্য জায়গা থাকলে অ্যাকশনটি একটি বোতাম হিসেবে প্রদর্শিত হয়। যদি পর্যাপ্ত জায়গা না থাকে, অতিরিক্ত ক্রিয়াগুলি ওভারফ্লো মেনুতে পাঠানো হয়। যদি আপনি app:showAsAction="never" সেট করেন —যেমন উদাহরণ কোডের সেটিংস অ্যাকশনে আছে—অ্যাকশনটি সর্বদা ওভারফ্লো মেনুতে তালিকাভুক্ত থাকে এবং অ্যাপ বারে প্রদর্শিত হয় না।

অ্যাপ বারে অ্যাকশন প্রদর্শিত হলে সিস্টেম অ্যাকশনের আইকনটিকে অ্যাকশন বোতাম হিসেবে ব্যবহার করে। আপনি উপাদান আইকন অনেক দরকারী আইকন খুঁজে পেতে পারেন.

কর্মের প্রতিক্রিয়া

ব্যবহারকারী যখন অ্যাপ বার আইটেমগুলির একটি নির্বাচন করেন, তখন সিস্টেমটি আপনার কার্যকলাপের onOptionsItemSelected() কলব্যাক পদ্ধতিতে কল করে এবং কোন আইটেমটি ট্যাপ করা হয়েছে তা নির্দেশ করতে একটি MenuItem অবজেক্ট পাস করে৷ আপনার onOptionsItemSelected() এর বাস্তবায়নে, কোন আইটেমটি ট্যাপ করা হয়েছে তা নির্ধারণ করতে MenuItem.getItemId() পদ্ধতিতে কল করুন। প্রত্যাবর্তিত আইডিটি সংশ্লিষ্ট <item> এলিমেন্টের android:id অ্যাট্রিবিউটে আপনি যে মানের ঘোষণা করেছেন তার সাথে মেলে।

উদাহরণস্বরূপ, নিম্নলিখিত কোড স্নিপেট ব্যবহারকারী কোন ক্রিয়াটি নির্বাচন করে তা পরীক্ষা করে। যদি পদ্ধতিটি ব্যবহারকারীর ক্রিয়াকে চিনতে না পারে তবে এটি সুপারক্লাস পদ্ধতিকে আহ্বান করে:

কোটলিন

override fun onOptionsItemSelected(item: MenuItem) = when (item.itemId) {
    R.id.action_settings -> {
        // User chooses the "Settings" item. Show the app settings UI.
        true
    }

    R.id.action_favorite -> {
        // User chooses the "Favorite" action. Mark the current item as a
        // favorite.
        true
    }

    else -> {
        // The user's action isn't recognized.
        // Invoke the superclass to handle it.
        super.onOptionsItemSelected(item)
    }
}

জাভা

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.action_settings:
            // User chooses the "Settings" item. Show the app settings UI.
            return true;

        case R.id.action_favorite:
            // User chooses the "Favorite" action. Mark the current item as a
            // favorite.
            return true;

        default:
            // The user's action isn't recognized.
            // Invoke the superclass to handle it.
            return super.onOptionsItemSelected(item);

    }
}