मैं दिखाने/कुछ तार है कि मैं सही पर सेट किया जाएगा/strings.xml
फ़ाइल पर झूठे के आधार पर एक Android आवेदन पर एक मेनू में से कुछ के लिए विकल्पों को छिपाना चाहते हैं।कैसे Android पर एक मेनू के विकल्पों parametrize के लिए?
एक उदाहरण के रूप में, मैं strings.xml
फ़ाइल पर इन तार होगा:
<string name="option1">false</string>
<string name="option2">true</string>
<string name="option3">true</string>
तो इस मामले में केवल option2
और option3
दिखाया जाना है।
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
getMenuInflater().inflate(R.menu.main, menu);
if((getResources().getString(R.string.option1)).equals("false")){
menu.getItem(R.id.option1).setVisible(false);
}
return true;
}
लेकिन option1
अभी भी मेनू पर दिखाया जा रहा है:
दूसरी ओर, मेरा मतलब है, कोड में, मैं निम्नलिखित की कोशिश की।
क्या मैं इन विकल्पों parametrize को क्या करना चाहिए? मैं तो बस इन विकल्पों को दूर कर सकता है, लेकिन मैं चाहते हैं कि भविष्य में अगर अपने ग्राहकों के लिए इन विकल्पों सक्रिय फिर से चाहते हैं, मैं इसे आसानी से सही को गलत मान परिवर्तित कर सकता है।
संपादित करें:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/option1"
android:title="Option 1" />
<item
android:id="@+id/option2"
android:title="Option 2" />
<item
android:id="@+id/option3"
android:title="Option 3" />
....
</group>
</menu>
अंतिम अद्यतन
मैं सूचना है कि मैं NullPointerException
हो रही थी क्योंकि मेनू के नाम गलत था है: यहाँ मेरी मेनू है। मैंने इसे ठीक कर दिया है और अब यह मुझे कोई त्रुटि नहीं देता है।
लेकिन मेरी समस्या आता है क्योंकि मैं दो अलग अलग लेआउट कि दो अलग अलग मेनू (प्रत्येक लेआउट में एक) शामिल है और मैं एक स्ट्रिंग है जो प्रवेश पर आता है के आधार पर प्रत्येक लेआउट बढ़ा देते हैं।
उदाहरण के लिए, यह देखते हुए कि स्ट्रिंग पहले लेआउट को बढ़ाने के लिए है "हैलो" के रूप में मेरे MainActivity
की onCreate
समारोह पर इस प्रकार मैं लेआउट प्रदर्शित:
if("hello".equals(stringForLayout)){
setContentView(R.layout.activity_main);
}else{
setContentView(R.layout.activity_main_secondary);
}
कैसे मैं दोनों मेनू के विकल्पों parametrize कर सकते हैं ताकि अगर पहला दिखाया जा रहा है और मैं एक विकल्प छिपाना चाहता हूं, तो मैं उस मेनू के उस विकल्प को संदर्भित कर पाऊंगा?
अग्रिम धन्यवाद!
@ user3728999 के रूप में, आप बेहतर मानक साझा संदर्भ समाधान के लिए जाना चाहते हैं। फिर तदनुसार अपने मेनू आइटम दृश्यता सेट करें। –