Vraag Hoe maak je een voorwaardelijke invalidateOptionsMenu () aanroep afhankelijk van het API-niveau in Android?


Ik probeer de menuknoppen van mijn app bij te werken elke keer dat een van deze wordt ingedrukt; in API 11+ moet je bellen invalidateOptionsMenu() om dit te doen; omdat ik wil dat mijn app compatibel is met lagere API's, hoe kan ik alleen deze methode gebruiken bij het gebruik van api 11+?


46
2017-10-24 16:45


oorsprong


antwoorden:


Gebruik

ActivityCompat.invalidateOptionsMenu(Activity activity)

van de compatibiliteitsbibliotheek.


101
2018-06-08 00:51



Voor de anderen die op zoek zijn naar een antwoord zoals ik was:

Als je gebruikt ActionBarSherlock en proberen de knoppen op de actiebalk op API <11 te vernieuwen in plaats van

Activity.invalidateOptionsMenu()

je kunt gebruiken

SherlockActivity.supportInvalidateOptionsMenu():


44
2018-02-07 10:20



Als u ActionBarActivity in uw klas uitbreidt, hebt u dit alleen nodig:

supportInvalidateOptionsMenu();

30
2017-11-27 00:50



Ik denk niet dat er een compatibiliteitsbibliotheek nodig is, enzovoort, doe gewoon een simpele

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
    invalidateOptionsMenu(); 
}

U hoeft het niet voor de honingraat te bellen sinds afaik, onPrepareOptionsMenu () wordt aangeroepen wanneer op de menuknop wordt gedrukt. Het werkt voor mij.


7
2017-07-29 21:10



Heb je geprobeerd met behulp van een FragmentActivity van de Ondersteuningspakket in plaats van een normale activiteit? Ik geloof dat de FramentActivity dan de methode heeft die je nodig hebt.


1
2017-10-24 16:52



Ik denk dat ik het heb ... het antwoord was om een ​​nieuwe klas te maken:

public class wrapThree {
    public void invalidate(myActivity act) {
        act.invalidateOptionsMenu();
    }
}

en noem die methode vervolgens vanuit myActivity als de API 11+ is

Dit geeft tenminste geen fouten op API <11 ... moet het nog testen op API 11+


-1
2017-10-25 12:55