कार्रवाइयों को जोड़ें और मैनेज करें

ऐप्लिकेशन बार की मदद से, उपयोगकर्ता की कार्रवाइयों के लिए बटन जोड़े जा सकते हैं. इस सुविधा की मदद से, आपको मौजूदा संदर्भ के लिए सबसे ज़रूरी कार्रवाइयां: उदाहरण के लिए, कोई फ़ोटो ब्राउज़िंग ऐप्लिकेशन share और create दिखाएं एल्बम बटन सबसे ऊपर तब दिखेंगे, जब उपयोगकर्ता अपना फ़ोटो रोल देख रहा होगा. टास्क कब शुरू होगा जब उपयोगकर्ता किसी फ़ोटो को देखता है, तो ऐप्लिकेशन काटें और फ़िल्टर बटन.

ऐप्लिकेशन बार में सीमित जगह है. अगर कोई ऐप्लिकेशन, फ़िट की जा सकने वाली कार्रवाइयों से ज़्यादा कार्रवाइयों के बारे में बताता है ऐप्लिकेशन बार में, ऐप्लिकेशन बार अतिरिक्त कार्रवाइयों को एक overflow मेन्यू पर भेजता है. ऐप्लिकेशन यह भी तय कर सकता है कि ओवरफ़्लो मेन्यू में कोई कार्रवाई हमेशा दिखे, और ऐप बार पर नहीं दिखेगा.

कार्रवाई बार आइकन के साथ Android ऐप्लिकेशन में Now दिखाई देने वाली एक इमेज
पहली इमेज. "अब Android में उपलब्ध" में कार्रवाई आइकॉन है.

ऐक्शन बटन जोड़ना

कार्रवाई ओवरफ़्लो में उपलब्ध सभी कार्रवाई बटन और अन्य आइटम किसी XML में परिभाषित मेन्यू संसाधन पर क्लिक करें. जोड़ने के लिए कार्रवाई बार में कार्रवाइयों को ट्रैक करने के लिए, अपने प्रोजेक्ट के res/menu/ डायरेक्ट्री.

जोड़ें <item> वह एलिमेंट चुनें जिसे आपको ऐक्शन बार में शामिल करना है, जैसा कि सैंपल मेन्यू की एक्सएमएल फ़ाइल देखें:

<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 एट्रिब्यूट की वैल्यू सबमिट करें.

उदाहरण के लिए, नीचे दिया गया कोड स्निपेट यह देखता है कि उपयोगकर्ता कौनसी कार्रवाई चुनता है. अगर यह तरीका उपयोगकर्ता की कार्रवाई की पहचान न कर पाए, तो यह सुपर क्लास शुरू कर देता है तरीका:

Kotlin

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

Java

@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);

    }
}