Hi @gui_lvgl ,
My apologies, if you are testing with my posted example I left a line which should have been removed:
Does this work okay for you now:
static lv_obj_t *scr_1;
static lv_obj_t *scr_2;
static lv_style_t style_btn;
static lv_style_t style_label;
static bool first_run = false;
void create_screen_1(void);
void create_screen_2(void);
static void screen1_event_handler(lv_event_t *e)
{
lv_event_code_t code = lv_event_get_code(e);
switch (code)
{
case LV_EVENT_CLICKED:
{
lv_obj_del(scr_1);
create_screen_2();
}
break;
default: break;
}
}
static void screen2_event_handler(lv_event_t *e)
{
lv_event_code_t code = lv_event_get_code(e);
switch (code)
{
case LV_EVENT_CLICKED:
{
lv_obj_del(scr_2);
create_screen_1();
}
break;
default: break;
}
}
void create_screen_1(void)
{
scr_1 = lv_obj_create(NULL);
lv_scr_load(scr_1);
if( !first_run ) {
lv_style_init(&style_label);
lv_style_init(&style_btn);
first_run = true;
}
lv_style_set_text_font(&style_label, &lv_font_montserrat_18);
lv_style_set_text_opa(&style_label, LV_OPA_100);
lv_style_set_text_color(&style_label, lv_color_black());
lv_style_set_border_width(&style_btn, 1);
lv_style_set_border_opa(&style_btn, LV_OPA_100);
lv_style_set_border_color(&style_btn, lv_color_black());
lv_obj_t * exit_btn = lv_btn_create(scr_1);
lv_obj_add_style(exit_btn, &style_btn, 0);
lv_obj_set_size(exit_btn, 80, 30);
lv_obj_align(exit_btn, LV_ALIGN_CENTER, 0,0);
lv_obj_add_event_cb(exit_btn, screen1_event_handler, LV_EVENT_CLICKED, NULL);
lv_obj_t * exit_btn_label = lv_label_create(exit_btn);
lv_obj_add_style(exit_btn_label, &style_label, 0);
lv_label_set_text(exit_btn_label, "screen 1");
lv_obj_align_to(exit_btn_label, exit_btn, LV_ALIGN_CENTER, 0, 0);
}
void create_screen_2(void)
{
scr_2 = lv_obj_create(NULL);
lv_scr_load(scr_2);
if( !first_run ) {
lv_style_init(&style_label);
lv_style_init(&style_btn);
first_run = true;
}
lv_style_set_text_font(&style_label, &lv_font_montserrat_14);
lv_style_set_text_opa(&style_label, LV_OPA_100);
lv_style_set_text_color(&style_label, lv_color_white());
lv_style_set_border_width(&style_btn, 1);
lv_style_set_border_opa(&style_btn, LV_OPA_100);
lv_style_set_border_color(&style_btn, lv_color_white());
lv_obj_t * exit_btn = lv_btn_create(scr_1);
lv_obj_add_style(exit_btn, &style_btn, 0);
lv_obj_set_size(exit_btn, 80, 30);
lv_obj_align(exit_btn, LV_ALIGN_CENTER, 0,0);
lv_obj_add_event_cb(exit_btn, screen2_event_handler, LV_EVENT_CLICKED, NULL);
lv_obj_t * exit_btn_label = lv_label_create(exit_btn);
lv_obj_add_style(exit_btn_label, &style_label, 0);
lv_label_set_text(exit_btn_label, "screen 2");
lv_obj_align_to(exit_btn_label, exit_btn, LV_ALIGN_CENTER, 0, 0);
}
I will also post an alternative method which you can consider which will use slightly less memory and code, give me a bit of time…
Kind Regards,
Pete