使用ant build时出错了R.drawable引用ID

时间:2013-01-01 07:38:47

标签: android ant

在使用ant build之后,当我尝试将它们分配出来时(不是在xml中),我得到一些可绘制的id混合起来。

我有一个数组,其中包含一些可绘制的ID:

int[]ids={R.drawable.pic1,R.drawable.pic2,R.drawable.pic3,R.drawable.pic4};

当我尝试将它们分配给imageview时,会显示不同的drawable。

@Override
protected void onCreate(Bundle arg0) {
    super.onCreate(arg0);
    setContentView(R.layout.somelayout);
    iv = (ImageView)findViewById(R.id.image);
    iv.setBackgroundResource(ids[0]);
}

当我在xml中设置drawable时不会发生这种情况:

<ImageView
    android:id="@+id/image"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/pic1" />

2 个答案:

答案 0 :(得分:1)

尝试关闭Eclipse并从命令行运行ant clean,然后运行ant。如果可行,最可能的问题是您的ant脚本构建到与Eclipse相同的目录,如果Eclipse在执行ant构建时正在运行,它可能会检测更改的文件并同时运行自己的构建。这可能会导致基于构建时间的一些不一致结果。

通常,请确保您的ant脚本构建到与Eclipse使用的目录不同的目录。这包括“gen”目录 - 为ant使用单独的目录。

答案 1 :(得分:0)

尝试通过资源获取可绘制内容:

 int[]ids={ getResources().getDrawable(R.drawable.pic1), getResources().getDrawable(R.drawable.pic2)};

如果在getResources()中收到错误,请尝试使用

 int[]ids={ YourActivityName.this.getResources().getDrawable(R.drawable.pic1), YourActivityName.this.getResources().getDrawable(R.drawable.pic2)};

尝试这些方法::

删除int [] id并尝试直接获取它::

  iv = (ImageView)findViewById(R.id.image);
  iv.setImageResource(R.drawable.pic1);