Android Fragments में एक्शन बार विकल्प मेनू कैसे जोड़ें




android-fragments android-actionbar (2)

मुझे जवाब के लिए देर हो चुकी है लेकिन मुझे लगता है कि यह एक और समाधान है जिसका उल्लेख यहां पोस्ट नहीं किया गया है।

चरण 1: मेनू का एक एक्सएमएल बनाएं जिसे आप जोड़ना चाहते हैं जैसे मुझे अपने एक्शन बार पर फ़िल्टर एक्शन जोड़ना है, इसलिए मैंने एक एक्सएमएल फिल्टर.एक्सएमएल बनाया है। नोटिस करने के लिए मुख्य पंक्ति एंड्रॉइड है: ऑर्डरइन श्रेणी यह जहां भी आप दिखाना चाहते हैं, पहले या आखिरी बार एक्शन आइकन दिखाएंगे। ध्यान देने योग्य एक और बात मान है, यदि मूल्य कम है तो यह पहले दिखाएगा और यदि मूल्य अधिक है तो यह आखिरकार दिखाएगा।

filter.xml

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


    <item
        android:id="@+id/action_filter"
        android:title="@string/filter"
        android:orderInCategory="10"
        android:icon="@drawable/filter"
        app:showAsAction="ifRoom" />


</menu>

चरण 2: टुकड़े की क्रिएट () विधि में बस नीचे दी गई रेखा को उल्लिखित करें, जो एक गतिविधि में जैसे क्रिएटऑप्शनमेनू (मेनू मेनू, मेनू इन्फ्लूटर inflater) विधि को वापस कॉल करने के लिए ज़िम्मेदार है।

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true);
    }

चरण 3: अब क्रिएटऑप्शनमेनू पर विधि जोड़ें जो ओवरराइड के रूप में होगा:

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.filter, menu);  // Use filter.xml from step 1
    }

चरण 4: अब ऐप्शन से जोड़ा गया एक्शन आइकन चुनते समय ऑप्शन इटैम चयन विधि जिसमें आप तर्क को कार्यान्वित कर सकते हैं, जब भी आप करना चाहते हैं:

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if(id == R.id.action_filter){
            //Do whatever you want to do 
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

मैं एंड्रॉइड फ्रैगमेंट्स में एक विकल्प मेनू रखने की कोशिश कर रहा हूं। ActionBar विकल्प मेनू मेरे टुकड़ों में प्रदर्शित नहीं हो रहा है।

यहां मेरा कोड है और मेरे पास onCreateOptionsMenu() और onOptionSelected() फ़ंक्शन दोनों हैं। मेरा कोड कोई त्रुटि नहीं दिखाता है। लेकिन विकल्प मेनू प्रदर्शित नहीं हो रहे हैं।

package org.reachout;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;

import org.general.R;

public class ViewMessageFragment extends Fragment {

    /* (non-Javadoc)
     * @see android.support.v4.app.Fragment#onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle)
     */
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        if (container == null) {
            // We have different layouts, and in one of them this
            // fragment's containing frame doesn't exist.  The fragment
            // may still be created from its saved state, but there is
            // no reason to try to create its view hierarchy because it
            // won't be displayed.  Note this is not needed -- we could
            // just run the code below, where we would create and return
            // the view hierarchy; it would just never be used.
            return null;
        }
        return (LinearLayout)inflater.inflate(R.layout.viewmessages_tab_fragment_layout, container, false);
    }

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        // TODO Auto-generated method stub
        super.onCreateOptionsMenu(menu, inflater);
        inflater.inflate(R.menu.askexperts_menu, menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
       // handle item selection
       switch (item.getItemId()) {
          case R.id.action_settings:
             // do s.th.
             return true;
          default:
             return super.onOptionsItemSelected(item);
       }
    }   

}

AndroidManifest.xml सेट थीम होलो इस तरह:

<activity
android:name="your Fragment or activity"
android:label="@string/xxxxxx"
android:theme="@android:style/Theme.Holo" >





android-optionsmenu