【问题标题】:How can I convert a string into an ID? [duplicate]如何将字符串转换为 ID? [复制]
【发布时间】:2019-01-04 21:24:51
【问题描述】:

我必须将像“R.drawable.photo”这样的字符串转换为包含相同内容的整数。我该怎么办?

<string name="id1">R.drawable.photo</string>

我需要一个包含“R.drawable.photo”的 ID

【问题讨论】:

  • 您能否分享更多有关您的用例的信息?目前尚不清楚您打算从/向哪些 ID 进行翻译。
  • 我需要从字符串中获取 id "R.drawable.photo"
  • 我认为这里更大的问题是为什么你必须这样做?考虑到R.string.id1 在应用程序的生命周期内永远不会改变,你为什么要尝试将R.string.id1“解析”成R.drawable.photo 而不是直接使用R.drawable.photo
  • 因为在我的应用程序中有一个 xml 文件中包含大量字符串的数组,我需要随机提取一个并使用它来设置 ImageView
  • 为什么不在您的 java/kotin 代码中使用一组可绘制的 id?

标签: java android


【解决方案1】:

使用getIdentifier() 方法获取:

int id = getResources().getIdentifier("photo", "drawable", getPackageName());

getResources()getPackageName() 可能需要 Context 如果此代码不在活动中:

int id = context.getResources().getIdentifier("photo", "drawable", context.getPackageName());

如果字符串有R.drawable.前缀,那么:

String str = "R.drawable.photo"
int id = getResources().getIdentifier(str.replace("R.drawable.", ""), "drawable", getPackageName());

【讨论】:

  • 我已经尝试过了,但是当我尝试使用 id 时,调试器显示他的值为 0
  • 问题解决了,我的 res 目录有问题。谢谢
  • 如果它有效。
【解决方案2】:
int resID = getResources().getIdentifier("myString", 
        "drawable", getPackageName());

将上面的myString替换为您的字符串值,即“photo

【讨论】:

    猜你喜欢
    • 2014-08-05
    • 2019-06-17
    • 2015-08-17
    • 1970-01-01
    • 2012-07-04
    • 2011-06-18
    • 2012-05-03
    相关资源
    最近更新 更多