Chcę pokazać/ukryć niektóre opcje menu na aplikacji Android w zależności od niektórych ciągów, które ustawię na true/false w pliku strings.xml
.Jak parametryzować opcje menu na urządzeniu z systemem Android?
Jako przykład, będę mieć te sznurki na strings.xml
pliku:
<string name="option1">false</string>
<string name="option2">true</string>
<string name="option3">true</string>
Więc w tym przypadku tylko option2
i option3
muszą być pokazane.
Z drugiej strony, to znaczy, w kodzie, próbowałem następujące:
@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;
}
Ale option1
wciąż jest pokazany w menu.
Co należy zrobić, aby sparametryzować te opcje? Mogę po prostu usunąć te opcje, ale chciałbym, aby w przyszłości, gdyby moi klienci chcieli ponownie aktywować te opcje, mógłbym to z łatwością zmienić wartość false na true.
EDIT: Oto moje menu:
<?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>
LAST UPDATE
mam informuje, że byłem coraz NullPointerException
ponieważ nazwa menu było źle. Naprawiłem to i teraz nie daje mi żadnego błędu.
Ale mój problem wynika z tego, że mam dwa różne układy, które zawierają dwa różne menu (jeden w każdym układzie) i nadmuchuję każdy układ w zależności od ciągu znaków, który pojawia się podczas logowania.
Na przykład, biorąc pod uwagę, że ciąg nadmuchać pierwszy układ jest „cześć” wyświetlać układy następująco na onCreate
funkcji mojego MainActivity
:
if("hello".equals(stringForLayout)){
setContentView(R.layout.activity_main);
}else{
setContentView(R.layout.activity_main_secondary);
}
Jak mogę parametrize opcje obydwu menu tak jeśli pierwszy jest pokazywany i chcę ukryć jedną opcję, mógłbym odnieść się do tej opcji tego menu?
Z góry dziękuję!
Jak powiedział użytkownik @3737999, lepiej wybrać standardowe rozwiązanie SharedPreferences. Następnie ustaw odpowiednio widoczność elementów menu. –