Native Tizen - Как удалить изображение? - PullRequest
0 голосов
/ 24 марта 2020

Добавление нового окна и его установка работают на основе документации разработчика Tizen учебник . Но когда я добавляю изображение во второе окно, после того, как оно появилось, оно не исчезает sh.

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

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 может очищать кнопку и заголовок второго окна, но не очищает изображение.

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

1 Ответ

2 голосов
/ 31 марта 2020

Rifat.

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

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

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

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

...