gpt4 book ai didi

android - 从名称中获取资源标识符

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:06:00 25 4
gpt4 key购买 nike

我正在开发一个应用程序,它从数据库中读取每个 Logo 的资源名称,然后尝试设置可绘制对象。

但是,当我尝试获取 Logo 的整数标识符并且我的应用程序在应用程序开始时突然强制关闭时,我的 Logcat 中出现了一个NumberFormatException

我的代码如下:

String logo;
logo = c.getString(2);
button.setBackgroundResource(Integer.parseInt(logo));

logo 保存在数据库中,例如:R.drawable.logo

你有什么地方出了问题的建议吗?

最佳答案

如果值为logo"R.drawable.logo" (a String ),则无法解析为 int . R.drawable.logo 实际上是对 static int logo 的引用static class drawable 中的变量,它是生成的资源类的子类 R . R是生成的资源类,您可以在项目中的 gen 下找到它文件夹。

你必须自己解析它。如果您知道它是一个将被返回的可绘制对象,您必须执行如下操作:

String logoParts [] = logo.split ("\\.");
int logoId = getResources ().getIdentifier (logoParts [logoParts.length - 1], "drawable", "com.example.app");

或者,您可以将其拆分为一个函数:

public static int parseResourceString (Stinrg resString, String package) {
String resParts [] = resString.split ("\\.");
return getResources ().getIdentifier (resParts [resParts.length - 1], resParts [resParts.length - 2], package);
}

关于android - 从名称中获取资源标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15384019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com