表盘map增加误判断,避免错误id因为不当操作注册进来 423/3 423/head
authorhcj <1224667075@qq.com>
Mon, 1 Jul 2024 11:21:47 +0000 (19:21 +0800)
committerhcj <1224667075@qq.com>
Mon, 1 Jul 2024 11:21:47 +0000 (19:21 +0800)
code/sdk/application/wearable/fd230app/nativeui/set_dial/src/SetDialModel.cpp

index 770037a..f2e4e1a 100644 (file)
@@ -172,7 +172,10 @@ namespace OHOS
     /* 获取当前表盘Id */
     uint16_t SetDialModel::GetCurrentDialID()
     {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "currentDialID is %d,name is %s", currentDialID, registeredDials[currentDialID].c_str());
+       if (registeredDials.find(currentDialID) != registeredDials.end())
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "currentDialID is %d,name is %s", currentDialID, registeredDials[currentDialID].c_str());
+        }
         return currentDialID;
     }
     /* 获取所有表盘Id 每个表盘Id 2个字节 拼接为字符串 */
@@ -240,25 +243,28 @@ namespace OHOS
     /*更新表盘*/
     void SetDialModel::UpdateDialSetting(uint16_t ID)
     {
-        std::string dialname = registeredDials[ID]; // 根据ID找到对应的表盘名称
-        // 在dialInfoList中查找同名表盘
-        for (size_t i = 0; i < dialInfoList.size(); i++)
+        if (registeredDials.find(ID) != registeredDials.end())
         {
-            if (dialInfoList[i].dialName == dialname)
+            std::string dialname = registeredDials[ID]; // 根据ID找到对应的表盘名称
+            // 在dialInfoList中查找同名表盘
+            for (size_t i = 0; i < dialInfoList.size(); i++)
             {
-                DialSetting diagSetting;
-                SetDialInfo &info = dialInfoList[i];
-                diagSetting.dialFlag = info.dialFlag;
-                diagSetting.dialId = info.id;
-                diagSetting.dialFullName = info.dialFullName;
-                MainModel::GetInstance().AddDialSetting(diagSetting); // 更新表盘设置
-                currentDialID = ID;                                   // 更新当前表盘Id
-                NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);
-                return; // 更新成功后直接返回
+                if (dialInfoList[i].dialName == dialname)
+                {
+                    DialSetting diagSetting;
+                    SetDialInfo &info = dialInfoList[i];
+                    diagSetting.dialFlag = info.dialFlag;
+                    diagSetting.dialId = info.id;
+                    diagSetting.dialFullName = info.dialFullName;
+                    MainModel::GetInstance().AddDialSetting(diagSetting); // 更新表盘设置
+                    currentDialID = ID;                                   // 更新当前表盘Id
+                    NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);
+                    return; // 更新成功后直接返回
+                }
             }
+            NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetDialModel UpdateDialSetting: Cannot find dial with name %s", dialname.c_str());
         }
-        NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetDialModel UpdateDialSetting: Cannot find dial with name %s", dialname.c_str());
     }
 
     /*加载所有表盘*/