diff --git a/frameworks/core/components_ng/pattern/menu/menu_item/menu_item_pattern.cpp b/frameworks/core/components_ng/pattern/menu/menu_item/menu_item_pattern.cpp index 02ca574bbab6434a129e7d0f0be2f841f9d47cbb..be1784d3bd0ecaf9cdf09d8f8bfb44260405910f 100644 --- a/frameworks/core/components_ng/pattern/menu/menu_item/menu_item_pattern.cpp +++ b/frameworks/core/components_ng/pattern/menu/menu_item/menu_item_pattern.cpp @@ -167,6 +167,7 @@ void MenuItemPattern::OnMountToParentDone() void MenuItemPattern::AttachBottomDivider() { + CreateBottomDivider(); CHECK_NULL_VOID(bottomDivider_); auto host = GetHost(); CHECK_NULL_VOID(host); @@ -196,7 +197,6 @@ void MenuItemPattern::OnAttachToFrameNode() RegisterOnTouch(); RegisterOnPress(); RegisterOnHover(); - CreateBottomDivider(); auto host = GetHost(); CHECK_NULL_VOID(host); MenuView::RegisterAccessibilityChildActionNotify(host); @@ -207,7 +207,6 @@ void CustomMenuItemPattern::OnAttachToFrameNode() InitFocusPadding(); RegisterOnKeyEvent(); RegisterOnTouch(); - CreateBottomDivider(); auto host = GetHost(); CHECK_NULL_VOID(host); MenuView::RegisterAccessibilityChildActionNotify(host); @@ -215,6 +214,9 @@ void CustomMenuItemPattern::OnAttachToFrameNode() void MenuItemPattern::CreateBottomDivider() { + if (bottomDivider_) { + return; + } auto host = GetHost(); CHECK_NULL_VOID(host); bottomDivider_ = FrameNode::GetOrCreateFrameNode(V2::MENU_DIVIDER_TAG, diff --git a/frameworks/core/components_ng/pattern/menu/menu_item/menu_item_pattern.h b/frameworks/core/components_ng/pattern/menu/menu_item/menu_item_pattern.h index 1e1abac32d004f42081ea872b703c6b8f0fb44f1..d86f91a32e4c6737a4cfb04b7d1d8ad6b7d7ec2c 100644 --- a/frameworks/core/components_ng/pattern/menu/menu_item/menu_item_pattern.h +++ b/frameworks/core/components_ng/pattern/menu/menu_item/menu_item_pattern.h @@ -210,6 +210,7 @@ public: RefPtr GetBottomDivider() { + CreateBottomDivider(); return bottomDivider_; } diff --git a/test/unittest/core/pattern/menu/menu_divider_test_ng.cpp b/test/unittest/core/pattern/menu/menu_divider_test_ng.cpp index ccc5ea764cee60265b8abad18b71c288e969207a..8fa3d2315f15dbaff8df764fee7b8823591a5414 100644 --- a/test/unittest/core/pattern/menu/menu_divider_test_ng.cpp +++ b/test/unittest/core/pattern/menu/menu_divider_test_ng.cpp @@ -480,6 +480,9 @@ HWTEST_F(MenuDividerTestNG, MenuDividerTest009, TestSize.Level1) ASSERT_NE(menuItemPattern, nullptr); auto bottomDivider = menuItemPattern->GetBottomDivider(); EXPECT_NE(bottomDivider, nullptr); + auto bottomDivider1 = menuItemPattern->GetBottomDivider(); + EXPECT_NE(bottomDivider1, nullptr); + EXPECT_EQ(bottomDivider, bottomDivider1); auto dividerPattern = bottomDivider->GetPattern(); ASSERT_NE(dividerPattern, nullptr); auto layoutAlgorithm = dividerPattern->CreateLayoutAlgorithm();