ProgramingTip

API <11에 대한 Android invalidateOptionsMenu ()

bestdevel 2020. 10. 15. 08:11
반응형

API <11에 대한 Android invalidateOptionsMenu ()


내가 사용 ActivityCompat.invalidateOptionsMenu(MainActivity.this);/를 ( "메뉴"옵션을 만지지 열어 사용자 잎에게 메뉴를 상상해야 사용하지 않고 사용할 수 ... 나는 자동으로 새로 고침에 '새로 고침'메뉴 항목을 필요로 내 메뉴 항목 "새로 고침"가 자동 으로 활성화 될 수 있도록 활성화).

ActivityCompat.invalidateOptionsMenu(MainActivity.this)안드로이드 11 +에서 잘 작동합니다. 하지만 android API <11에 무엇을 사용할 수 있습니까? : S 검색을 많이했는데 답을 수 없습니다. 누구든지 이것에 대해 나를 도울 수 있습니까?

이는 Android API 11 이상에서 onPrepareOptionsMenuActivityCompat.invalidateOptionsMenu(MainActivity.this). 문제는 Android API <11에서 완료합니다.

onPrepareOptionsMenu방법 은 다음과 가변 .

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    if(menuRefreshEnable){
        menu.getItem(0).setEnabled(true);
    }
    if(!menuRefreshEnable){
        menu.getItem(0).setEnabled(false);
    }       
    return true;
}

API < 11사용 supportInvalidateOptionsMenu()방법


ActivityCompat.invalidateOptionsMenu()대신하지 않고 onPrepareOptionsMenu();메뉴를 직접 업데이트합니다. 그냥 몇 개 더 Log.d()직접 확인하십시오.

이것은 나를 위해 작동합니다 (API 8을 사용하고 있습니다).

private Menu mMenu;
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.track_fragment, menu);
    mMenu = menu;
    }
...
private void someMethod() {
...
    if (mMenu != null) {
       MenuItem item = mMenu.findItem(R.id.new_track);
       if (item != null) {
            item.setVisible(false);
            ActivityCompat.invalidateOptionsMenu(this.getActivity());
        }
    }
...
}

someMethod()GET도 전에 여러 곳에서 호출을 onCreateOptionsMenu()확인해야합니다 mMenu != null.


API가 11 이상 지원되는 경우 true를 반환합니다. API 11 이전에는 메뉴 버튼을 눌렀을 때 메뉴가 그려 지거나 자동으로 사용이 방법이 필요하지 않습니다.

참고 URL : https://stackoverflow.com/questions/14008470/android-invalidateoptionsmenu-for-api-11

반응형