【问题标题】:Getting resource from name instead of id in android在android中从名称而不是id获取资源
【发布时间】:2011-10-28 03:40:14
【问题描述】:

我有以下代码用于使用名称而不是 id 获取资源:

spec = new ImageView[56];
for (i=2; i<=56; i++) {
    String s = null;
    s = "items_r"+Integer.toString(i)+"_c1";
    spec[i] = (ImageView) findViewById(getResources().getIdentifier(s,"drawable",getPackageName()));
    Log.e(tag, Boolean.toString(spec[i] == null));
}

我的可绘制文件夹中有 56 个项目,名为 items_r1_c1 到 items_r56_c1;
但我将 spec[i] 设为空。
有人可以指出我的错误以及如何纠正它吗?
谢谢。

【问题讨论】:

    标签: java android xml android-layout nullpointerexception


    【解决方案1】:

    试试这个

    int id = findViewById(getResources().getIdentifier(s,"drawable",getPackageName());
    spec[i] = (new ImageView()).setImageResource(id);
    

    【讨论】:

      【解决方案2】:

      findViewById(int) 用于查找已膨胀且当前存在于您的 Activity 内容视图下的 Views。

      您需要使用Resources.getDrawable(int)ImageView.setImageResource(int)

      spec = new ImageView[56];
      for (i=2; i<=56; i++) {
          String res = "items_r" + Integer.toString(i) + "_c1";
          int resId = getResources().getIdentifier(res, "drawable", getPackageName());
          spec[i] = new ImageView();
          // Drawable image = getResources.getDrawable(resId);
          // spec[i].setImageDrawable(image);
          spec[i].setImageResource(resId);
          Log.e(tag, Boolean.toString(spec[i] == null));
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-24
        • 1970-01-01
        • 1970-01-01
        • 2021-09-10
        • 1970-01-01
        • 2014-05-08
        • 2020-11-12
        • 2018-01-16
        相关资源
        最近更新 更多