Родной Tizen - Как удалить изображение?

Добавление и отображение нового окна работает на основе руководства Tizen для разработчиков < / а>. Но когда я добавляю изображение во второе окно, после его появления изображение не исчезает.

Вот код во втором окне с добавленным изображением:

static void list_item_doubleclicked_cb(void *data, Evas_Object *obj, void *event_info){
Evas_Object *navi_button;
Evas_Object *nf = data;
Elm_Object_Item *nf_it;


Evas_Object *image = elm_image_add(nf);
evas_object_move(image, 0, 0);
evas_object_resize(image, 400, 300);
evas_object_show(image);

char img_path[128];
char *res_path = app_get_resource_path();
snprintf(img_path, sizeof(img_path), "%s%s%s", res_path, "images/","myImage.png");

elm_image_file_set(image, img_path, NULL);


navi_button = elm_button_add(nf);
elm_object_text_set(navi_button, "Prev");
elm_object_style_set(navi_button, "bottom");
evas_object_smart_callback_add(navi_button, "clicked",
                               prev_btn_clicked_cb, nf);

nf_it = elm_naviframe_item_push(nf, "Second view", NULL,
                                NULL, navi_button, NULL);
}

Здесь функция pop может очищать кнопку и второй заголовок окна, но не очищает изображение.

Весь остальной код похож на связанный учебник. Изображение остается на экране. Мне нужно удалить это, как я могу?


person Rifat    schedule 24.03.2020    source источник


Ответы (1)


Рифат.

По сути, Evas Object не принадлежит ни одному из родителей смарт-объекта. Его время жизни и базовое поведение работают независимо, а не под управлением. Таким образом, вам нужно управлять им вручную. Однако, если вы добавляете объект изображения к конкретному родительскому объекту смарт-объекта, экземпляром изображения может управлять его родитель. Это означает, что если родительский элемент удален, его дочерние элементы также удаляются. В основном * виджет-контейнер работает как родительский смарт-объект.

Вы правильно создали объект-изображение, но не поместили его ни в какие контейнеры. Naviframe предназначен для просмотра контейнеров, таких как elm_layout, elm_box, grid, table и т. Д. Вы можете составить представление, используя один из них, одновременно помещая дочерние элементы в контейнер. Таким образом, когда происходит всплытие naviframe, макет будет удален naviframe, а его дочерние элементы, включая ваше изображение, также будут удалены, поскольку это дочерний элемент контейнера.

В противном случае вы должны удалить объект изображения, явно вызвав evas_object_del (); когда вид появляется. Или скройте его, вызвав evas_object_hide () при отправке следующего представления.

Надеюсь, мое описание будет вам понятно. Thansk.

person Hermet Park    schedule 31.03.2020