android – 资源$NotFoundException:资源ID无效.为什么?

android – 资源$NotFoundException:资源ID无效.为什么?,第1张

概述我试图在我的dimens.xml文件中添加一个浮点数. 我正在阅读following SO answer.当我尝试解决方案时,我得到了评论中描述的异常.我试图找出抛出异常的原因. 为了完整性,这里是XML: <item name="zoom_level" format="float" type="dimen">15.0</item> 这是爆炸的代码: final float zoom = this 我试图在我的dimens.xml文件中添加一个浮点数.

我正在阅读following SO answer.当我尝试解决方案时,我得到了评论中描述的异常.我试图找出抛出异常的原因.

为了完整性,这里是XML:

<item name="zoom_level" format="float" type="dimen">15.0</item>

这是爆炸的代码:

final float zoom = this.getResources().getDimension(R.dimen.zoom_level);

我跳进了AndroID源代码,这里是getDimension的方法定义:

public float getDimension(int ID) throws NotFoundException {    synchronized (mTmpValue) {        TypedValue value = mTmpValue;        getValue(ID,value,true);        if (value.type == TypedValue.TYPE_DIMENSION) {            return TypedValue.complexToDimension(value.data,mMetrics);        }        throw new NotFoundException(                "Resource ID #0x" + Integer.toHexString(ID) + " type #0x"                + Integer.toHexString(value.type) + " is not valID");    }}

所以无论出于什么原因,value.type!= TypedValue.TYPE_DIMENSION.我没有完全设置我的AndroID源代码,因此我无法在那里轻松添加Log.w(“YARIAN”,“value type is”value.type)’语句.

然后我跳进了getValue,调用链似乎是:

Resources.getValue -> AssetManager.getResourceValue -> AssetManager.loadResourceValue

loadResourceValue是一个本机方法,这是我的挖掘分崩离析的地方.

有谁知道了解最新情况的最佳方法是什么?

我还注意到Resources有一个TypedValue.TYPE_float和TypedValue.TYPE_DIMENSION.但在XML中,我不能写type =“float”.

注释中描述的解决方法是使用type = string然后使用float.parse来获取浮点数.这有必要吗?为什么或者为什么不?

解决方法 我知道这是一个迟到的答案,但你应该使用 TypedValue#getFloat()而不是像你建议的那样将字符串解析为浮点数.

XML:

<item name="float_resource" format="float" type="raw">5.0</item>

Java的:

TypedValue out = new TypedValue();context.getResources().getValue(R.raw.float_resource,out,true);float floatResource = out.getfloat();

如果您愿意,可以将fraction,raw或string作为类型,这仅对应于R中的资源类.

总结

以上是内存溢出为你收集整理的android – 资源$NotFoundException:资源ID无效.为什么?全部内容,希望文章能够帮你解决android – 资源$NotFoundException:资源ID无效.为什么?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1138067.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存