【问题标题】:Reference R.id. in custom class参考 R.id。在自定义类
【发布时间】:2014-02-23 02:28:02
【问题描述】:

我基本上做了一个类,用这个方法:

    void setResource(Context context, R.id resourceID) {
    ImageView test = (ImageView) context.findViewById(resourceID);
    }

“findViewById”给了我一个无法解决的方法。 我在 XML 中定义了三个 ImageView,我想以编程方式设置与它们关联的图像。在我的 main_activty 中,我使用:

    ImageView blah = (ImageView) this.findViewById(R.id.blah);

然后:

    blah.setImageResource(R.drawable.pony);

但是,我想将所有内容传递给我创建的类并让它处理自定义类中的所有内容,但是当我尝试传递所有内容(最顶部的代码;“setResource”)时,我得到了 findViewByID无法解决方法。有没有办法做到这一点?

【问题讨论】:

  • findViewById 找不到可绘制对象。它在布局中查找视图。此外,drawable 不一定在 ImageView 中。它们在 Drawables 中。您可以使用 xml 或以编程方式为可绘制对象创建 ImageView,但两者是不同的概念。我认为您对自己想做什么感到困惑,并且对这个问题感到困惑,以至于我无法猜测您真正需要做什么。
  • 为清晰起见进行了编辑。我喝了几杯啤酒。道歉。

标签: android class methods findviewbyid


【解决方案1】:

我认为您正在尝试找到表达您正在尝试做的事情的词语,以及一些基本概念。这是我对您要完成的工作的最佳猜测...

下面的代码为 drawable 获取一个 id,加载它,然后将它放入布局中的 imageView 中。 ImageView 必须已经存在于您的布局中,它不会为您动态创建一个。

void setResource(Context context, int resourceId) {

    //resourceId = R.drawable.ponies (example)
    Drawable drawable = context.getResources().getDrawable(resourceId);

    //R.id.main_imageview is example imageView in a layout.
    ImageView iv = findViewById(R.id.main_imageview);
    iv.setImageDrawable(drawable);
}   

【讨论】:

  • 我从心理上预测,drawable 将是关于小马的 :)
  • 天哪,伙计,那是通灵的。你不仅听懂了我在说什么,而且你的小马也是对的。谢谢。让我失望的是“int”。我正在通过一个 R.id。
  • @EricAnthony 如果查看生成的R.java 文件,您会看到idR 类中的类的名称。 id的内容全部声明为int
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-03
  • 1970-01-01
  • 2013-07-31
  • 1970-01-01
相关资源
最近更新 更多