【问题标题】:String value to a variable [closed]变量的字符串值[关闭]
【发布时间】:2013-11-01 09:32:38
【问题描述】:

这是一个关于 android 上的 java 的问题 - eclipse 我有一个String r 为了记录,我是这样定义他的:

String r="pic"+c1;

我想取它的值,即“pic6”并将其用作变量名。

我该怎么做?

【问题讨论】:

  • 如果 c1 是 6 连接有什么问题?
  • Java 不支持动态变量。

标签: java android string


【解决方案1】:

如果你想从Android应用的drawable文件夹中选择一个名为“pic6.png”的图片,你可以试试下面的代码。

String r = "pic" + c1;

int resId = getResources().getIdentifier(r, "drawable", getPackageName());
if (resId != 0) {
    imageView.setImageResource(resId);
} else {
    // This is used in case no image resource is found
    imageView.setImageResource(R.drawable.unknown);
}

请看:如果使用else部分,则需要将“unknown.png”图片添加到Android项目的drawable文件夹中。

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    你不能直接这样做,但你可以使用 HashMap 来模拟你所寻求的。

    例子:

    String r="pic"+c1;
    HashMap<String,Integer> extendedVars=new HashMap<>();
    extendedVars.put(r,10);
    

    【讨论】:

    • 对不起,我不知道 HashMap 是什么...我有这个代码:String r="pic"+c1; pic6.setImageDrawable(getResources().getDrawable( R.drawable.orange)); 我想放 r 而不是 pic6。
    • @AlonLousky 映射将键映射到值,因此您可以使用它来模拟动态变量声明(假设您稍后编写解释器)。你可以说 HashMap varMap=new HashMap(); varMap.put("pic6", new ...);然后稍后调用 varMap.get("pic"+c1).setImageDrawable(.....)
    • @AlonLousky 考虑到这是一个 Android 问题(在我的原始答案中没有注意到),您可能需要查看 stackoverflow.com/questions/10137692/…stackoverflow.com/questions/3476430/…
    • 太棒了,它对我很有帮助。谢谢大家!
    【解决方案3】:

    喜欢英语。福阿德说。 Java 不支持动态变量。
    可以找到同样的问题Here

    【讨论】:

      【解决方案4】:

      在 java 中,变量名必须在编译时知道。没有办法做你想做的事。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-20
        • 1970-01-01
        • 1970-01-01
        • 2011-05-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-30
        • 1970-01-01
        相关资源
        最近更新 更多