Description
I imitate demo.c code method,I dynamic create and delete a obj.
when I delele two page, It is work okay.but when I delete more page that I find program will random died .
What MCU/Processor/Board and compiler are you using?
F746
Code to reproduce
static void btn_1select_cb(lv_obj_t * btn, lv_event_t event)
{
if(event == LV_EVENT_CLICKED) {
if(btn == btn_1selectRoom)
{
scr3_roomSelect_ObjCreate();
lv_tabview_set_tab_act(tabview, (uint16_t)2, LV_ANIM_OFF);
}
else if(btn == btn_P2_2)
{
scr5_SelectLvHomeMode_ObjCreate();
lv_tabview_set_tab_act(tabview, (uint16_t)eLvMainObj_selectLvHomeSetTime, LV_ANIM_OFF);
}
else if(btn == btn_P2_7)
{
scr10_SelectRunState_ObjCreate();
lv_tabview_set_tab_act(tabview, (uint16_t)eLvMainObj_selectRunState, LV_ANIM_OFF);
}
}
}
static void scr10_SelectRunState_ObjCreate(void)
{
lv_obj_t * tmplabel = NULL;
lv_obj_t * tmpimg = NULL;
lv_obj_t * tmpcont = NULL;
lv_obj_t * tmpobj = NULL;
char i,tmpbuf[3]={0};
if(gMainObjManager[eLvMainObj_selectRunState] == NULL)
{
gMainObjManager[eLvMainObj_selectRunState] = lv_cont_create(gLvScr[eLvMainObj_selectRunState], NULL);
lv_obj_set_protect(gMainObjManager[eLvMainObj_selectRunState], LV_PROTECT_PARENT); /*Don't let to move the wallpaper by the layout */
lv_obj_set_parent(gMainObjManager[eLvMainObj_selectRunState], gLvScr[eLvMainObj_selectRunState]);
lv_obj_set_size(gMainObjManager[eLvMainObj_selectRunState], LV_HOR_RES_MAX, LV_VER_RES_MAX);
lv_obj_set_pos(gMainObjManager[eLvMainObj_selectRunState], 0, 0);
lv_img_set_style(gMainObjManager[eLvMainObj_selectRunState], LV_IMG_STYLE_MAIN, &style_btn_border_maincolor);
//*******
//smart mode set font
tmpobj = lv_obj_create(gMainObjManager[eLvMainObj_selectRunState], NULL);
lv_obj_set_size(tmpobj, 260, 50);
lv_obj_set_pos(tmpobj, 46, 65);
lv_cont_set_style(tmpobj, LV_CONT_STYLE_MAIN, &style_btn_rel);
// lv_cont_set_layout(tmpobj,LV_LAYOUT_CENTER);
//obj character xitongshezhi
tmplabel = lv_label_create(tmpobj, NULL);
lv_label_set_style(tmplabel, LV_LABEL_STYLE_MAIN, &style_chinese_blue);
lv_label_set_text(tmplabel, "运行状态");
lv_obj_align(tmplabel, NULL, LV_ALIGN_CENTER, 0, 0);
//btnP5 return home
btnP10_returnhome = lv_btn_create(gMainObjManager[eLvMainObj_selectRunState], NULL);
lv_btn_set_style(btnP10_returnhome, LV_BTN_STYLE_REL, &style_btn_rel);
lv_btn_set_style(btnP10_returnhome, LV_BTN_STYLE_PR, &style_btn_pr);
lv_obj_set_pos(btnP10_returnhome, 798, 66);
lv_obj_set_size(btnP10_returnhome, 88, 50);
lv_obj_set_user_data(btnP10_returnhome, (lv_obj_user_data_t)eLvMainObj_ModeSelect);
lv_cont_set_layout(btnP10_returnhome,LV_LAYOUT_CENTER);
lv_obj_set_event_cb(btnP10_returnhome, btn_event_cb);
//btnP4 return
tmpimg = lv_img_create(btnP10_returnhome, NULL);
lv_img_set_src(tmpimg, &ImgManager[eLvImgNum_P1ReturnHome].img);
lv_img_set_style(tmpimg, LV_IMG_STYLE_MAIN, &lv_style_plain);
//btnP4 return
btnP10_return = lv_btn_create(gMainObjManager[eLvMainObj_selectRunState], NULL);
lv_btn_set_style(btnP10_return, LV_BTN_STYLE_REL, &style_btn_rel);
lv_btn_set_style(btnP10_return, LV_BTN_STYLE_PR, &style_btn_pr);
lv_obj_set_pos(btnP10_return, 888, 66);
lv_obj_set_size(btnP10_return, 88, 50);
lv_cont_set_layout(btnP10_return,LV_LAYOUT_CENTER);
//btnP4 return icon
tmpimg = lv_img_create(btnP10_return, NULL);
lv_img_set_src(tmpimg, &ImgManager[eLvImgNum_Allreturn].img);
lv_img_set_style(tmpimg, LV_IMG_STYLE_MAIN, &lv_style_plain);
//square1
//square1 time set
tmpobj = lv_obj_create(gMainObjManager[eLvMainObj_selectRunState], NULL);
lv_obj_set_size(tmpobj, 750+178, 70);
lv_obj_set_pos(tmpobj, 46, 132);
lv_cont_set_style(tmpobj, LV_CONT_STYLE_MAIN, &style_btn_rel);
//xitongshijian label
tmplabel = lv_label_create(gMainObjManager[eLvMainObj_selectRunState], NULL);
lv_label_set_style(tmplabel, LV_LABEL_STYLE_MAIN, &FONT_MAINDISPLAY);
lv_label_set_text(tmplabel, "运行机组");
lv_obj_align(tmplabel, tmpobj, LV_ALIGN_IN_LEFT_MID, 150, 0);
}
}
static void btn_event_cb(lv_obj_t * btn, lv_event_t event)
{
uint16_t btnData=(uint16_t)lv_obj_get_user_data(btn);
if(event == LV_EVENT_CLICKED) {
// if((uint16_t)lv_obj_get_user_data(btn) == 0)
// if(btnP4_returnhome == btn)
// {
// lv_obj_del(gMainObjManager[eLvMainObj_selectSmartMode]);
// gMainObjManager[eLvMainObj_selectSmartMode] = NULL;
// btnData=eLvMainObj_ModeSelect;
// }
// else if(btnP6_returnhome == btn)
// {
// lv_obj_del(gMainObjManager[eLvMainObj_selectSelfMode]);
// gMainObjManager[eLvMainObj_selectSelfMode] = NULL;
// btnData=eLvMainObj_ModeSelect;
// }
if(btnP5_returnhome == btn)
{
lv_obj_del(gMainObjManager[eLvMainObj_selectLvHomeSetTime]);
gMainObjManager[eLvMainObj_selectLvHomeSetTime] = NULL;
btnData=eLvMainObj_ModeSelect;
}
else if(btnP10_returnhome == btn)
{
lv_obj_del(gMainObjManager[eLvMainObj_selectRunState]);
gMainObjManager[eLvMainObj_selectRunState] = NULL;
btnData=eLvMainObj_ModeSelect;
}
lv_tabview_set_tab_act(tabview, (uint16_t)btnData, LV_ANIM_OFF);
}
// if(event == LV_EVENT_CLICKED) {
// if((uint16_t)lv_obj_get_user_data(btn) == 0)
// {
// }
// else if((uint16_t)lv_obj_get_user_data(btn) == 1)
// {
// }
// lv_tabview_set_tab_act(tabview, (uint16_t)lv_obj_get_user_data(btn), LV_ANIM_OFF);
// }
}