1

我有以下设置。在我的 xml 中,我有一堆图像视图。我试图根据首选项中设置的数字和星期几仅显示其中一个。这一定很容易,但我找不到将变量传递给 findViewByID 的正确方法。这是代码片段:

String groupName = "R.id."+prefs.getString("groupListKey", "<unset>")+"_"+(Calendar.getInstance().get(Calendar.DAY_OF_WEEK));

ImageView image = (ImageView) findViewById(groupName);
4

2 回答 2

3

findViewById() 期望您向它传递一个表示资源标识符的整数。您正在尝试将其传递给字符串

您最好的选择是有一个条件语句来评估您的星期几并返回正确的 ID,而不是按照您的方式进行操作

 int resourceId = 0;
 switch (Calendar.getInstance().get(Calendar.DAY_OF_WEEK)) {
     case Calendar.SUNDAY:
         resourceId = R.id.sundayView;
         break;

     case Calendar.MONDAY:
         resourceId = R.id.mondayView;
         break;

     ...etc
 }

ImageView image = (ImageView) findViewById(resourceId);
于 2012-04-30T16:39:40.767 回答
1

findViewById接收 anint作为参数,它是R.id类中生成的参数之一。

你可以有一个带有你的 id 的数组:

int[] imagesIds = new int[] { R.id.image1, ... R.id.image7 };

然后根据您的条件确定索引:

int imageIndex = ...
ImageView image = (ImageView) findViewById(imagesIds[imageIndex]);
于 2012-04-30T16:39:49.923 回答