【问题标题】:How to include multiple bitmaps into a global arraylist?如何将多个位图包含到全局数组列表中?
【发布时间】:2025-11-21 20:25:01
【问题描述】:

我有一个ArrayList 作为一个类的成员变量,当函数OnImageDecodeUrlReceived() 和整个列表应该在另一个函数OnCreate() 稍后使用时,它应该用位图对象初始化。但由于位图对象是 OnImageDecodeUrlReceived() 的本地对象,因此该对象超出范围并且在 OnCreate() 中不可用。
如何让位图对象在函数外可见?

【问题讨论】:

  • 您可以构造一个新的Bitmap,它是收到的副本的副本,并将副本添加到ArrayList
  • 我试图通过使用'new Bitmap(oldBitmapObject)' 来做到这一点,但它似乎会产生一个错误,说'不能调用私有构造函数'。请说明是否有其他方法。
  • 我的意思是使用Construct 方法。参考the documentation for Bitmap

标签: c++ arraylist bitmap tizen tizen-native-app


【解决方案1】:

需要将位图指针存放在arraylist中,不要删除OnImageDecodeUrlReceived()内的指针

例如:

将arrayList定义为

ArrayListT<Bitmap*> yourList;

void YourClass::OnImageDecodeUrlReceived(RequestId reqId,
    Tizen::Graphics::Bitmap* pBitmap, result r,
    const Tizen::Base::String errorCode,
    const Tizen::Base::String errorMessage)
{
     yourList.Add(pBitmap);
}

使用后清除arrayList并删除那些位图指针

【讨论】:

  • 我仍然无法显示来自 ArrayListT 的图像!当使用 GetAt(index,bitmapObject) 在 OnCreate() 将图像加载到 Bitmap* 对象时,应用程序意外关闭。
  • 位图对象是 OnImageDecodeUrlReceived() 的局部变量吗?如果是这样,则对象必须失去作用域,并且应该在函数作用域之后自动删除。在这种情况下,如何使相同的位图图像扩大其范围?
  • 您应该查看指针处理,除非您删除指针,否则 Bitmap* 不会失去其范围,您应该将指针保留在 arrayList 中,您可以发布您的代码,包括 arrayList.add get声明与使用
【解决方案2】:

我在类中创建了位图对象(不是指针对象)数组,然后使用 Construct 将 OnImageDecodeUrlReceived() 中的位图复制到数组中的那些对象。现在它工作正常。

【讨论】: