android-lifecycle icon indicating copy to clipboard operation
android-lifecycle copied to clipboard

Clarification: onCreateOptionMenu() called ones but onPrepareOptionMenu() every time

Open johnnyfivedev opened this issue 6 years ago • 3 comments

Fact: onCreateOptionMenu() called ones but onPrepareOptionMenu() every time.

Proof: onCreateOptionMenu() is only called once, the first time the options menu is displayed. To update the menu every time it is displayed, see onPrepareOptionsMenu(Menu).

onPrepareOptionMenu() Prepare the Screen's standard options menu to be displayed. This is called right before the menu is shown, every time it is shown

Problem: Block diagram shows that every time onResume() called both onCreateOptionMenu() and onPrepareOptionMenu() are called. Which is not true.

Solutions: "Called once, the first time the options menu is displayed or if menu invalidated" comment need to be added there or condition (diamond-like) block with text "first menu display or invalidated" and "yes" and "no" branches

johnnyfivedev avatar May 27 '19 10:05 johnnyfivedev

"called once" - under which conditions? The above is true for activity but not for fragments. If you have backstack, every backing (assuming backstack is single container based) will trigger creation of view and the menu (that is, among others onCreateOptionsMenu, onPrepareOptionsMenu will be called). If backstack is multi container based (I don't even know if it's officially supported by google), I think onCreateOptionsMenu/onPrepareOptionsMenu will even be called for fragment that's in backstack but in different container then the upper fragment.

oradkovsky avatar May 27 '19 15:05 oradkovsky

The above is true for activity but not for fragments

If the above is true only for activity, then changes should be made only for activity diagram.

johnnyfivedev avatar May 28 '19 08:05 johnnyfivedev

@xxv any comment?

johnnyfivedev avatar Feb 18 '20 08:02 johnnyfivedev