修复哄睡文本的更新
authorxue <2144439972@qq.com>
Mon, 1 Dec 2025 10:01:50 +0000 (18:01 +0800)
committerxue <2144439972@qq.com>
Mon, 1 Dec 2025 10:01:50 +0000 (18:01 +0800)
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/include/ThunderBirdLullabyView.h
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/include/ThunderBirdModel.h
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdLullabyView.cpp

index 7ddaf5c..ad243db 100644 (file)
@@ -58,6 +58,9 @@ namespace OHOS
         // 保存VIEW_4的文本,用于从VIEW_5回退时恢复
         std::string savedView4Text;
         
+        // 记录上一个视图状态,用于判断是否从VIEW_5切换到VIEW_4
+        int16_t lastView{-1};
+        
     };
 }
 
index f2cf24a..aee37ac 100644 (file)
@@ -235,6 +235,8 @@ namespace OHOS
         
         // 处理故事响应消息的finished标志
         void HandleStoryResponseFinished(bool finished);
+        // 重置故事模式finished标志(进入故事模式时调用)
+        void ResetStoryModeFinished(void);
         // 故事模式超时处理函数
         void HandleStoryModeTimeout(void);
         
index 58fc16e..2abdd73 100644 (file)
@@ -243,6 +243,10 @@ namespace OHOS
     {
         ThunderBirdModel::GetInstance()->StopCountUpTimer();//每次进入哄睡界面都停止定时器
         if (group == nullptr) { return; }
+        
+        // 记录上一个视图状态(在switch之前保存,用于判断是否从VIEW_5切换到VIEW_4)
+        int16_t previousView = lastView;
+        lastView = showView;
         if (TextLabel) 
         { TextLabel->SetVisible(false); 
             TextLabel->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS);  
@@ -376,6 +380,9 @@ namespace OHOS
             ThunderBirdModel::GetInstance()->LowFrequence();//减低视频帧率
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdLullabyView::Show: THUNDERBIRD_LULLABYVIEW_4");
             
+            // 重置故事模式finished标志,确保每次进入故事模式时标志位是干净的
+            ThunderBirdModel::GetInstance()->ResetStoryModeFinished();
+            
             // 启动故事模式超时定时器(1分钟无文本切换则退出)
             ThunderBirdModel::GetInstance()->StartStoryModeTimeoutTimer();
             
@@ -423,15 +430,15 @@ namespace OHOS
             if (TextLabel)
             {
                 TextLabel->SetPosition(35, 64, 300, 42);
-                // å¦\82æ\9e\9cæ\9c\89ä¿\9då­\98ç\9a\84æ\96\87æ\9c¬ï¼\8cå\88\99æ\81¢å¤\8då®\83ï¼\9bå\90¦å\88\99使ç\94¨é»\98认文本
-                if (!savedView4Text.empty()) {
+                // å\8fªæ\9c\89ä»\8eTHUNDERBIRD_LULLABYVIEW_5å\88\87æ\8d¢å\88°THUNDERBIRD_LULLABYVIEW_4æ\97¶æ\89\8dæ\81¢å¤\8dä¿\9då­\98ç\9a\84文本
+                if (previousView == THUNDERBIRD_LULLABYVIEW_5 && !savedView4Text.empty()) {
                     TextLabel->SetText(savedView4Text.c_str());
-                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdLullabyView::Show: 恢复保存的文本: %s", savedView4Text.c_str());
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdLullabyView::Show: 从VIEW_5切换到VIEW_4,恢复保存的文本: %s", savedView4Text.c_str());
                     // 恢复后清空保存的文本,以便下次进入时使用默认文本
                     savedView4Text.clear();
                 } else {
                     TextLabel->SetText("正在准备故事...");//设置初始文字
-                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdLullabyView::Show: 使用默认文本: 正在准备故事...");
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdLullabyView::Show: 使用默认文本: 正在准备故事... (previousView=%d)", previousView);
                 }
                 TextLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE); 
                 TextLabel->SetShadowOffsetX(2);