【问题标题】:how to get drawable from string? [duplicate]如何从字符串中获取drawable? [复制]
【发布时间】:2019-06-12 11:16:40
【问题描述】:

我有一个字符串,其值为 R 类中的可绘制位置,如下所示:

String myString = "R.drawable.ic_web_server"

我想将它的值分配给一个 int。

我尝试了Integer.parseString(myString),但它返回 null int。有什么建议吗?

【问题讨论】:

    标签: java android


    【解决方案1】:

    先去掉前缀"R.drawable.":

    String s = myString.replace("R.drawable.", "");
    

    然后用getIdentifier()获取drawable的整数id:

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

    context 是您必须提供的有效Context,或者如果您的代码在活动中,您可以省略它:

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

    【讨论】:

      【解决方案2】:

      你可以这样做

      String value= String.valueOf(R.drawable.ic_web_server);
      

      所以你将拥有资源的 id,然后你可以像这样使用

      imageView.setImageResource(Integer.parseInt(value));
      

      无需转换为字符串。我们可以直接用整数来做

      int value= R.drawable.ic_web_server;
      imageView.setImageResource(value);
      

      【讨论】:

      • R.drawable.ic_web_server 是一个整数 id。为什么要先转成字符串再转回整数?
      • 我们可以直接用整数来做,但我以为他想用字符串
      • OP 有一个字符串,想要一个整数 id。
      • OP 确实没有R.drawable.ic_web_server 而是一个字符串:String myString = "R.drawable.ic_web_server";。再次阅读问题。
      • 所以 OP 将获得一个字符串,然后必须找到该资源
      【解决方案3】:

      试试

      Integer.parseInt(myString);     
      

      您在哪里使用parseString。你也可以试试valueOf

      【讨论】:

      • 这将使应用程序崩溃,因为myString = "R.drawable.ic_web_server"
      【解决方案4】:

      使用下面的代码:

      int i = R.drawable.ic_web_server;
      

      代替:

      String myString = "R.drawable.ic_web_server"
      

      String myString = String.valueOf(R.drawable.ic_web_server);
      

      【讨论】:

      • OP 有:String myString = "R.drawable.ic_web_server";,问题是通过其字符串 id 获取可绘制对象的 id。再次阅读问题。
      【解决方案5】:

      您无法将可绘制图像作为字符串获取 因为它返回 int 在imageview中直接使用drawable设置图片

       imageview.setImageDrawable(getResources().getDrawable(R.drawable.logo));
      

      【讨论】:

      • OP 确实没有R.drawable.ic_web_server 而是一个字符串:String myString = "R.drawable.ic_web_server";。再次阅读问题。
      猜你喜欢
      • 2018-03-31
      • 2014-06-14
      • 1970-01-01
      • 1970-01-01
      • 2014-07-11
      • 2015-06-13
      • 1970-01-01
      • 2020-05-31
      • 2015-07-07
      相关资源
      最近更新 更多