【问题标题】:Android openRawResource() not working for a drawableAndroid openRawResource() 不适用于可绘制对象
【发布时间】:2014-10-23 17:21:48
【问题描述】:

我正在尝试通过这样做来创建输入流

InputStream is = (InputStream) getResources().openRawResource(R.drawable.image1);

但我遇到了关于我的可绘制文件 (R.drawable.image1) 的错误“预期的原始类型资源”。 image1 是一个 png,在我的 res/drawable 文件夹中。

有什么想法吗???

【问题讨论】:

    标签: android image inputstream drawable


    【解决方案1】:

    @Broatian 我目前没有 res/raw 文件夹。我找到了另一种解决方案: is = context.getResources().openRawResource(+ R.drawable.image1); + 显示其他文件夹。感谢您的帮助!

    【讨论】:

    • 这个加号有什么意义?这对我来说似乎不是标准的 Java 语法——是吗?它对 Android 编译器有何影响?
    • 这是怎么回事?为什么这行得通?这显然有效。
    • @alavin 加号有效。有人有这个加号做什么的文档的链接吗?
    • @tomi @maligree 这是一元加号运算符:docs.oracle.com/javase/tutorial/java/nutsandbolts/op1.html 在最新的 Android Studio 中,我让它与 0 + R.drawable.blah 一起工作。我认为正在发生的事情是它欺骗 IDE 使其不再准确知道 int 的“类型”被传递到函数中,因此它不能抱怨没有收到引用“原始”资源的 id。 IDE 过于激进,有点烦人,因为openRawResource 的文档说it can be used to open drawable, sound, and raw resources
    【解决方案2】:

    如果你想用这种方法打开你的 png,那么你必须把它放在 res/raw 文件夹中。然后您就可以使用 R.raw.image1 访问 png。

    另一种选择是将它保存在drawable文件夹中,然后将drawable转换为InputStream。见How to read drawable bits as InputStream

    我假设您知道如何获取可绘制对象,否则请查看资源文档。

    【讨论】:

      【解决方案3】:

      这是因为他们期待原始类型资源,而您传递的是可绘制类型资源。 在 res 文件夹中创建一个 raw 文件夹,然后将图像放入 raw 文件夹中。

      【讨论】:

        猜你喜欢
        • 2019-12-18
        • 1970-01-01
        • 2013-09-22
        • 1970-01-01
        • 2016-09-10
        • 2012-05-22
        • 1970-01-01
        • 2012-06-16
        • 2019-12-21
        相关资源
        最近更新 更多