Acknowledged
CIQQA-3915

ActionMenu not closing after selection on touch-based watches (simulator)

I observed the following issue in the simulator on touch-based watches:

  • When using an ActionMenu

  • and selecting an option in the ActionMenu, the delegate's onSelect() is called, but the action menu is not closed.

  • Selecting the same option again does not trigger onSelect() anymore.

  • When pressing the back button, the delegate's onBack() is not called. Instead, the app crashes with a Null Reference Error.

The ActionMenu is opened from the onSelect() handler of a CustomMenuItem, i.e. the user selects the menu item in a CustomMenu, which then opens the ActionMenu.

This occurred on all touch-based watches I tested: Vivoactive 6, Venu 2 Square, Venu 4, and Venu X1. I do not have a physical device, so I cannot tell whether this also happens on real devices or if it is a simulator issue.

Here is the source code used to reproduce the issue:

https://github.com/openhab/openhab-garmin/releases/tag/Issue-%23296

/source/main/user-interface/features/sitemap/shared/CommandMenuHandler.mc opens the ActionMenu.

/source/main/user-interface/features/sitemap/shared/CommandActionMenuDelegate.mc implements the input delegate.

Note that onBack() is currently commented out, since I normally do not need it. I only added it temporarily while debugging this issue.

  • Ah, thanks for confirming this - I was getting similar uncatchable errors on ActionMenu 2nd time opening, I changed them all to Menu2 for stability but is obviously less UI consistent

  • You try doing a popView at the end of your onSelect code?

    I tried this and it does close the action menu, but it also pops the underlying view from which the action menu was opened.

    What actually works is calling switchToView with the underlying view. This closes the action menu and returns to the underlying view.

    I have reached out to a user who has a Venu 2 to check whether the issue also occurs on a real device. If it does, I will implement switching back to the underlying view as a workaround.

  • You try doing a popView at the end of your onSelect code?

  • I think I encountered the same or almost the same issue a few months ago. At the end I decided not to use ActionMenu. In your case it might also work.
    I wonder if it happens also when the ActionMenu is opened from the action menu indicator and not from another menu.

    I kind of hope this is only a simulator issue, although I cannot say for sure. On my physical Epix Pro Gen 2 it works fine, but for those button-based watches it also works in the simulator.

    The action menu indicator is not an option in my case, because its use and availability are tied to a specific menu item, not to the screen as a whole.

  • I think I encountered the same or almost the same issue a few months ago. At the end I decided not to use ActionMenu. In your case it might also work.

    I wonder if it happens also when the ActionMenu is opened from the action menu indicator and not from another menu.