我正在尝试使用一个活动,该活动显示我数组中的一个随机对象。该对象是从意图传入的。
我试图为每个对象使用一个图像,然后为正确的对象显示正确的图像。
到目前为止,我一直在使用drawable文件夹保存图像,然后通过XML加载它们,但是这使我无法对同一ImageView使用多个图像。 我尝试使用imageview.setImageResource(R.drawable.imagename);但是由于某种原因,它似乎并不喜欢加载。 在这种情况下,是否需要为每个对象进行新的活动?
Banana Apple Pear
$var1 $var2 $var3
字节到位图方法
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_random_race);
TextView name = (TextView)findViewById(R.id.raceName);
Intent secondIntent = getIntent();
Race message = (Race)secondIntent.getSerializableExtra("RACE");
ImageView image = (ImageView) findViewById(R.id.raceImage);
image.setImageResource(R.drawable.hacan);
image.setImageBitmap(imageToBitmapImage(message, image));
name.setText(message.getName());
}
我正在谈论的每个对象的类。
public Bitmap imageToBitmapImage (Race message, ImageView image){
Bitmap bmp;
try {
FileInputStream in = new FileInputStream(message.getImageName());
BufferedInputStream buffer = new BufferedInputStream(in);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int input = buffer.read();
while (input != -1){
baos.write(input);
input = buffer.read();
}
byte[] bytes = baos.toByteArray();
bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
return bmp;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
答案 0 :(得分:1)
正如@XavierFalempin所评论的那样,您无法通过文件流访问资源。使用setImageResource()
应该可以。在this answer之后,您的onCreate()
方法应如下所示:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_random_race);
TextView name = (TextView)findViewById(R.id.raceName);
Intent secondIntent = getIntent();
Race message = (Race)secondIntent.getSerializableExtra("RACE");
ImageView image = (ImageView) findViewById(R.id.raceImage);
image.setImageResource(getResources().getIdentifier(message.getImageName(),
"drawable",
getPackageName()));
name.setText(message.getName());
}