में क्रिएटऑप्शन मैनेयू के बजाय ऑनपेरेपॉप्शनमेनू का उपयोग करना ActionBar
में मुझे कुछ खंड मेनू आइटम सेट करने में समस्या थी और मुझे इसे हल करने का कोई तरीका मिला, लेकिन मुझे समझ में नहीं आया कि यह क्यों काम करता है।फ्रैगमेंट
onCreateOptionsMenu
विधि में मेनू xml फ़ाइल से इसे फुलाए जाने के बाद मैं मेनू आइटम में दृश्यता को बदलना चाहता था। कोड ठीक काम करता प्रतीत होता है, लेकिन कोई दृश्य प्रभाव नहीं है। मैंने onCreateOptionsMenu
विधि में मेनू को भरने में समस्या हल की लेकिन onPrepareOptionsMenu
विधि में इसकी दृश्यता बदल रही है।
मैं क्या जानना चाहता हूं कि onCreateOptionsMenu
में दृश्यता को क्यों बदलना काम नहीं करता है।
onPrepareOptionsMenu
में मैं क्या कर सकता हूं कि मैं onCreateOptionsMenu
में नहीं कर सकता?
क्या यहां कोई अनुसरण करने के लिए कोई पैटर्न है?
धन्यवाद!
यहाँ प्रासंगिक कोड है, बस मामले में:
public class MyFragment extends Fragment {
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.my_menu, menu);
// This does not work, compiles and runs fine, but has no visible effect
MenuItem someMenuItem = menu.findItem(R.id.some_menu_item);
someMenuItem.setVisible(false);
}
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
// This does work
MenuItem someMenuItem = menu.findItem(R.id.some_menu_item);
someMenuItem.setVisible(false);
}
}
मुझे यकीन है कि नहीं कर रहा हूँ की कोशिश करो, लेकिन [प्रलेखन] (http://developer.android.com/reference/android/app/Activity। एचटीएमएल # onCreateOptionsMenu (android.view.Menu)) कहता है: "_ ... प्रत्येक बार प्रदर्शित होने पर मेनू को अपडेट करने के लिए, [onPrepareOptionsMenu (मेनू)] देखें (http://developer.android.com/reference/android/app/ Activity.html # onPrepareOptionsMenu (android.view.Menu)) ._ " –
टिप्पणी के लिए धन्यवाद! यहां की बात यह है कि मुझे इसे प्रदर्शित होने पर हर बार अपडेट करने की आवश्यकता नहीं होती है (यह हर समय प्रदर्शित होता है, कोई उपमेन नहीं होता है), मैं केवल मेनू को कॉन्फ़िगर करना चाहता हूं, जब बनाया/फुलाया जाता है और यह सब कुछ है । ठीक है, यह मेरी स्थिति में एक ही चीज़ प्रतीत हो सकता है लेकिन मेरे प्रश्न का मुद्दा समझ में आता है कि यह इस तरह क्यों काम करता है। मुझे इसे हर बार प्रदर्शित करने के दौरान मेनू को 'पुन: कॉन्फ़िगर करना' क्यों करना पड़ता है जब मैं इसे केवल एक बार बना सकता हूं? –
मैं समझता हूं और सहमत हूं कि एक विकल्प होना चाहिए। हालांकि मेरी राय में, मुझे लगता है कि यह एंड्रॉइड काम करता है। कुछ मामलों में, आप xml विशेषताओं के साथ मेनू के गुणों को हार्डकोड कर सकते हैं। –