【问题标题】:Native Tizen - How to remove image?Native Tizen - 如何删除图像?
【发布时间】:2020-03-24 10:55:58
【问题描述】:

添加新窗口并弹出它基于 Tizen 开发者文档tutorial。但是当我在第二个窗口中添加图像时,弹出它后,图像并没有消失。

这是第二个窗口中添加图像的代码:

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函数可以清除按钮和第二个窗口标题,但不会清除图像。

所有其他代码与链接教程类似。图像停留在屏幕上。我需要删除它,我该怎么做?

【问题讨论】:

    标签: c tizen tizen-wearable-sdk tizen-native-app


    【解决方案1】:

    里法特。

    基本上 Evas 对象不属于任何智能对象父级。它的生命周期和基本行为独立工作,而不是管理。因此,您需要手动控制它。但是,如果您将图像对象添加到特定的智能对象父级,则图像实例可以由其父级管理。意思是,如果父级被删除,它的子级也会被删除。大多数 *Container 小部件用作智能对象父级。

    您正确地创建了一个图像对象。但是您没有将它放入任何容器中。 Naviframe 旨在拥有容器的视图,例如 elm_layout、elm_box、grid、table 等。 您可以在将子项放入容器时使用其中一个来组合视图。因此,当发生 naviframe 弹出时,布局将被 naviframe 删除,并且它的子项(包括您的图像)也将被删除,因为它是容器的子项。

    否则,您应该通过显式调用 evas_object_del() 来删除图像对象; 当视图弹出时。或者在推送更多视图时调用 evas_object_hide() 将其隐藏。

    希望你能理解我的描述。谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-15
      • 2017-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-05
      • 1970-01-01
      • 2019-07-16
      相关资源
      最近更新 更多