2013-03-27 12 views
18
में
@Override 
    public void onCreateOptionsMenu(Menu menu,MenuInflater inflater){ 
     Log.d("Does", "get called"); 
     inflater.inflate(R.menu.menuItem, menu); 
     super.onCreateOptionsMenu(menu,inflater); 
    } 

    @Override 
    public void onPrepareOptionsMenu(Menu menu) { 
     super.onPrepareOptionsMenu(menu); 
     getActivity().invalidateOptionsMenu(); 
     MenuItem filter = menu.findItem(R.id.section); 

     filter.setVisible(false); 

    } 

मैं टुकड़े और उसके loaed हो रही में मेरे मेनू लोड करने के लिए कोशिश कर रहा हूँ बुलाया onPrepareOptionsMenu नहीं हो रही है, लेकिन मैं कहाँ कुछ मेनू आइटम को छिपाने के लिए की जरूरत है onPrepareOptionsMenu, बिल्कुल नहीं बुलाया हो रही है।टुकड़े

अद्यतन:

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

मैं setHasOptionsMenu(true) मेरी onCreate() विधि के अंदर बोल रहा हूँ।

+0

धन्यवाद, मुझे एक ही समस्या थी, लेकिन जैसा कि आप सेट पर सेट्स को सेट करने के लिए कॉल जोड़ते हैं, ठीक है, इसे ठीक करें। –

उत्तर

18

एंड्रॉइड 3.0 और उच्चतर पर, मेनू मेनू को क्रिया बार में प्रस्तुत किए जाने पर विकल्प मेनू हमेशा खुला रहता है। जब कोई ईवेंट होता है और आप मेनू अपडेट करना चाहते हैं, तो आपको अनुरोध करने के लिए अमान्य ऑप्शनमेनू() को कॉल करना होगा कि सिस्टम पर कॉल करें PrepareOptionsMenu()। बहुत देर हो चुकी menu.findItem(R.id.your_item_id)

5

शायद, लेकिन मैं एक ही समस्या थी और समाधान वास्तव में आसान था:

http://developer.android.com/guide/topics/ui/menus.html

विशेष आइटम उपयोग को बदलने के लिए। बस अपने टुकड़े से निष्क्रियता() अवैध करेंऑप्शनमेनू() को कॉल करें। यहPrepareOptionsMenu पर कॉल करेगा और यहां आप इस तरह की वस्तुओं की दृश्यता को नियंत्रित कर सकते हैं: menu.findItem (R.id.youritem) .setVisible (true/false); उम्मीद है कि मदद करता है!

0

यह मेरे लिए काम करता है।

public class ContentFragment extends android.support.v4.app.Fragment { 
    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.content_frame,container,false); 
     setHasOptionsMenu(true); 
     return v; 
    } 

    @Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     inflater.inflate(R.menu.note_menu,menu); 
     super.onCreateOptionsMenu(menu, inflater); 
    } 
} 
5

आपको दो चीजें करने की आवश्यकता है। चरण 1: Fragment OnCreateView में setHasOptionsMenu (सत्य) जोड़ें;

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    setHasOptionsMenu(true); 
    return inflater.inflate(R.layout.fragment_user_settings, container, false); 
} 

चरण 2: आपको getActivity() को अवैध करने की आवश्यकता है। अमान्य ऑप्शनमेनू(); OnViewCreated में अपने टुकड़े में। या जब आप फ्रैगमेंट बदलते हैं तो मुख्य गतिविधि में।

संबंधित मुद्दे