#android #imageview
#Android #imageview
Вопрос:
Я создаю приложение для Android, в котором мне нужно увеличить размер изображения по щелчку. Я загружаю эти изображения с сервера, а затем программно добавляю эти изображения в действие и, следовательно, программно устанавливаю идентификатор изображений. Теперь моя проблема в том, что когда я отправляю imageid в другое действие, чтобы увеличить его, он принимает только идентификатор последнего изображения.
и, следовательно, дает следующее исключение.
Unable to start activity ComponentInfo{com.emx.OnDaMove/com.emx.OnDaMove.FullImageActivity}: android.content.res.Resources$NotFoundException: Resource ID #0x5
я использую следующий код для создания изображений и добавления их в строки таблицы.
imageUrl = "http://ondamove.it/English/images/users/";
imageUrl = imageUrl listObject.get(j).getImage();
image = new ImageView(this);
image.setPadding(20, 10, 0, 0);
image.setId(j 1);
imageId=image.getId();
tr.addView(image);
и следующий метод для clickliastener:
private OnClickListener clickImageListener = new OnClickListener() {
public void onClick(View v) {
Intent fullScreenIntent = new Intent(v.getContext(),FullImageActivity.class);
fullScreenIntent.putExtra(ProfilePageNormalUser.class.getName(),imageId) ;
ProfilePageNormalUser.this.startActivity(fullScreenIntent);
}
};
и действие, в котором должны быть увеличены изображения,:
ImageView myimage = (ImageView) findViewById(R.id.imageviewEnlarged);
Intent intent = getIntent();
int imageId = (Integer) intent.getExtras().get(ProfilePageNormalUser.class.getName());
System.out.println("********" imageId "**********");
InputStream is = this.getResources().openRawResource(imageId);
Bitmap originalBitmap = BitmapFactory.decodeStream(is);
Matrix imageMatrix = new Matrix();
imageMatrix.postRotate(90);
Bitmap scaledBitmap = Bitmap.createBitmap(originalBitmap, myimage.getWidth(), myimage.getHeight(), originalBitmap.getWidth(), originalBitmap.getHeight(), imageMatrix, false);
myimage.setImageBitmap(scaledBitmap);
myimage.setScaleType(ScaleType.FIT_XY);
Ответ №1:
Я уверен, что это даст последний идентификатор, поскольку значение ImageID будет обновляться при каждом цикле. Это сохранит последнее известное значение во время цикла.
Вы должны использовать массив вместо простой переменной.
или вы можете использовать v.getId в методе onClick. (более простой вариант)
Комментарии:
1. даже получение идентификатора в методе onclick дает мне то же исключение
2. Можете ли вы ввести идентификатор в onClick и посмотреть, что он возвращает. Если это не для идентификатора, то ошибка должна быть в InputStream is = this.getResources().openRawResource(ImageID);
3. Это возможно, но вам нужен сервер, который принимает и отправляет текст. А также у получателя должно быть ваше приложение для этого.