strings.xml
파일에서 true/false로 설정할 일부 문자열에 따라 Android 응용 프로그램에서 메뉴의 일부 옵션을 표시하거나 숨기려고합니다. 예를 들어 Android에서 메뉴 옵션을 매개 변수화하는 방법은 무엇입니까?
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
여전히 메뉴에 표시되는 : 다른 측면에서
이러한 옵션을 매개 변수화하려면 어떻게해야합니까? 이러한 옵션을 제거 할 수는 있지만 앞으로 고객이 이러한 옵션을 다시 사용하기를 원한다면 거짓 값을 true로 변경하면 쉽게 해결할 수 있습니다.
편집 : 나는 메뉴의 이름이 잘못했기 때문에 내가 NullPointerException
을 얻고 있었다 통지를
<?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
: 여기 내 메뉴입니다. 나는 그것을 고쳤고 이제는 어떤 오류도주지 않는다.
그러나 두 개의 다른 레이아웃 (각 레이아웃마다 하나씩)이 포함 된 두 개의 다른 레이아웃이 있고 로그인 할 때 나타나는 하나의 문자열에 따라 각 레이아웃이 팽창하기 때문에 문제가 발생합니다. 내가 그렇게 두 메뉴의 옵션을 변수화 수있는 방법
if("hello".equals(stringForLayout)){
setContentView(R.layout.activity_main);
}else{
setContentView(R.layout.activity_main_secondary);
}
를 : 첫 번째 레이아웃을 팽창하는 캐릭터 라인 내 MainActivity
의 onCreate
기능을 다음과 같이 "안녕하세요"나는 레이아웃을 표시하는 것을 고려 예를 들어
, 첫 번째가 표시되고 하나의 옵션을 숨기려면 해당 메뉴의 해당 옵션을 참조 할 수 있습니까?
미리 감사드립니다. 당신이 문자열 (예 : S1 & S2)를 사용하는 경우
@ user3728999에 따르면 표준 SharedPreferences 솔루션을 사용하는 것이 좋습니다. 메뉴 항목 가시성을 적절하게 설정하십시오. –