xxv / android-lifecycle

A diagram of the Android Activity / Fragment lifecycle
5.26k stars 681 forks source link

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

Open johnnyfivedev opened 5 years ago

johnnyfivedev commented 5 years ago

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

oradkovsky commented 5 years ago

"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.

johnnyfivedev commented 5 years ago

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 commented 4 years ago

@xxv any comment?