为什么这段代码会给我一个错误?

时间:2011-12-03 20:12:09

标签: android

以下代码给了我一个错误

public class SuperImage3Activity extends Activity 
{

    ImageView image1, image2;

    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        image1 = (ImageView)findViewById(R.drawable.sourceimage1); // error here

        image2 = (ImageView)findViewById(R.drawable.sourceimage2); // error here

    }

我确实创建了一个名为drawable的目录,并在目录中放置了sourceimage1.jpg和sourceimage2.jpg。

Eclipse给出的建议是,

“从ADT 14开始,资源字段(例如doraemon)在库对象中定义时不再是常量。 这对于使库项目可以重新编译而不重新编译是必要的。

这样做的一个结果是您无法再在switch语句中直接使用这些字段。 您必须使用if-else链 “

2 个答案:

答案 0 :(得分:2)

R.id.imageview1
R.id.imageview2 

您已经在res / layout中创建了Xml布局,您可以在其中链接您的窗口小部件或视图或任何其他控件,或者您可以动态地进行控制。像这样

ImageView imageView1=new ImageView(this);
imageView1.setImageResource(R.drawable.sourceimage1);

答案 1 :(得分:0)

findViewById用于查找您正在调用该方法的视图(通常是活动)的视图

基本上它的完成方式是:(按顺序)

  1. 首先设计一个布局(在XML布局文件中,或以编程方式),列出所有组件和所需位置。
  2. 您为自己感兴趣的资源分配了一个ID(在XML中使用android:id="@+id/your_id_here",或者如果您的布局以编程方式完成,则为setId(XX)
  3. 您可以将此布局设置为您的活动或作为现有组件的子项(通常使用setContentView
  4. 现在,您可以使用2中定义的标识符findViewById
  5. findViewById 与资源本身一起用作参数(您的可绘制对象)。