Acknowledged
CIQQA-3139

onSettingsChanged() not fired for data field in simulator

In the SDK Ver 8.1.1 simulator, 

AppBase.onSettingsChanged() is not fired in a data field app when settings are changed from the settings menu (of the data field).
On an actual watch, it appears that the data field settings can only be edited when the data field is first added to an activity data screen.  When the activity is ALREADY RUNNING, the "Edit data field settings?" screen shows when the data field is selected but "Yes" cannot be selected.   The only way I can select Yes is when the activity is ALREADY RUNNING, is to remove the data field from the data screen then add it back, and when that is done I can select "Yes" and edit the settings.  
 
Is this the intended behavior?  If so, why can't settings be edited on the watch during the activity?
Parents
  • > AppBase.onSettingsChanged() is not fired in a data field app when settings are changed from the settings menu (of the data field).

    As flocsy said, onSettingsChanged() is meant for OG "off-device" settings (configured in Connect app or Garmin Express).

    It's not meant for on-device settings, and it isn't necessary (or really possible) for code on the device to notify your app when on-device settings are changed, as the on-device settings view is literally part of your app:

    - Why it isn't necessary: your settings view can do whatever it wants, including "notifying" the rest of the app that a change was made. (e.g. set a global variable like "settingsChanged = true" when a setting is change, and act on that in compute())

    - Why it isn't possible: your on-device app settings can take several forms, your settings view can do whatever it wants, and the device code has no idea when your settings view  changes "settings" or not. The device code doesn't know whether your settings are in app memory, storage, properties or some combination of the above. If your settings view changes something in app memory or calls an app function, device code doesn't know that, and even if it did, the device code wouldn't know if you changed a setting or not. Similarly, if you save something to storage or properties, the device code would not know whether you are saving a "setting" or not.

    > On an actual watch, it appears that the data field settings can only be edited when the data field is first added to an activity data screen. 

    What watch do you have?

    On my Forerunner 955 (5-buttons + touchscreen):

    - I only get the "Edit data field settings?" prompt when I add a data field, not when I select a data field after it was already added

    - For data fields that were already added, I can open settings as follows:

    -- hold UP for menu on any data page (does not have to same page as the data field)

    -- Select Connect IQ Fields (this is pretty far down the list for me - it's the 3rd or 5th item depending on whether the activity is started or not, and it's not visible unless I scroll)

    -- Select the CIQ data field whose setting I want to change

    This is def not intuitive and for me it's at least 5 button presses.

    > When the activity is ALREADY RUNNING, the "Edit data field settings?" screen shows when the data field is selected but "Yes" cannot be selected. 

    This def sounds like a bug

Comment
  • > AppBase.onSettingsChanged() is not fired in a data field app when settings are changed from the settings menu (of the data field).

    As flocsy said, onSettingsChanged() is meant for OG "off-device" settings (configured in Connect app or Garmin Express).

    It's not meant for on-device settings, and it isn't necessary (or really possible) for code on the device to notify your app when on-device settings are changed, as the on-device settings view is literally part of your app:

    - Why it isn't necessary: your settings view can do whatever it wants, including "notifying" the rest of the app that a change was made. (e.g. set a global variable like "settingsChanged = true" when a setting is change, and act on that in compute())

    - Why it isn't possible: your on-device app settings can take several forms, your settings view can do whatever it wants, and the device code has no idea when your settings view  changes "settings" or not. The device code doesn't know whether your settings are in app memory, storage, properties or some combination of the above. If your settings view changes something in app memory or calls an app function, device code doesn't know that, and even if it did, the device code wouldn't know if you changed a setting or not. Similarly, if you save something to storage or properties, the device code would not know whether you are saving a "setting" or not.

    > On an actual watch, it appears that the data field settings can only be edited when the data field is first added to an activity data screen. 

    What watch do you have?

    On my Forerunner 955 (5-buttons + touchscreen):

    - I only get the "Edit data field settings?" prompt when I add a data field, not when I select a data field after it was already added

    - For data fields that were already added, I can open settings as follows:

    -- hold UP for menu on any data page (does not have to same page as the data field)

    -- Select Connect IQ Fields (this is pretty far down the list for me - it's the 3rd or 5th item depending on whether the activity is started or not, and it's not visible unless I scroll)

    -- Select the CIQ data field whose setting I want to change

    This is def not intuitive and for me it's at least 5 button presses.

    > When the activity is ALREADY RUNNING, the "Edit data field settings?" screen shows when the data field is selected but "Yes" cannot be selected. 

    This def sounds like a bug

Children