首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java.lang.NoSuchMethodError: setBackground()

java.lang.NoSuchMethodError: setBackground()
EN

Stack Overflow用户
提问于 2014-03-12 12:00:52
回答 3查看 2.9K关注 0票数 0

在我的应用程序中,我试图将位图图像设置为FrameLayout,该图像来自SQLite数据库。我正在解码该图像,将其转换为Drawable,然后将其设置为FrameLayout背景,但它给了我类似于java.lang.NoSuchMethodError: android.widget.FrameLayout.setBackground()的错误

代码语言:javascript
复制
    ByteArrayInputStream imageStream2= new ByteArrayInputStream(cardbackground);
Bitmap Imagebackground = BitmapFactory.decodeStream(imageStream2);
Drawable imagebakground=new BitmapDrawable(getResources(),Imagebackground);
framelayout.setBackground(imagebakground);

我在用,

代码语言:javascript
复制
    android:minSdkVersion="14"
    android:targetSdkVersion="19"
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-12 12:02:58

setBackground()方法被添加到API级别16.使用setBackgroundDrawable()代替.

代码语言:javascript
复制
    Drawable imagebakground = new BitmapDrawable(getResources(),Imagebackground);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
        framelayout.setBackground(imagebakground);
    } else {
        frameLayout.setBackgroundDrawable(imagebakground);
    }
票数 4
EN

Stack Overflow用户

发布于 2014-03-12 12:02:47

setBackground()可以从API 16中获得,因此将minSdkVersion设置为14无助于此。您正在测试它的设备,至少必须是api级别。

票数 2
EN

Stack Overflow用户

发布于 2014-03-12 12:02:56

Bitmap设置为BackgroundDrawable到您的Layout而不是setBackground()

代码语言:javascript
复制
 if (Build.VERSION.SDK_INT >= 16)
  your_layout.setBackground(...);
 else
  your_layout.setBackgroundDrawable(...);

这是因为API级别16提供了setBackground()

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22350868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档