Привет всем
У меня есть массив ImageViews, которые я получаю с помощью камеры. но не сохранены на SD или что-то еще.
тогда я показываю все изображения в галерее.
теперь я пытаюсь создать предварительный просмотр изображения в этой галерее. Таким образом, щелчок изображения в галерее переключит представление и добавит изображение в линейную строку так:
private void ShowImagePreview (ImageView p_image, View p_view)
{
setContentView(R.layout.preview);
LinearLayout prevHolder = (LinearLayout) findViewById(R.id.mainHolder);
p_image.setLayoutParams( new ViewGroup.LayoutParams(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT));
p_image.setScaleType(ImageView.ScaleType.FIT_XY);
prevHolder.addView(p_image);
}
но по этой команде: prevHolder.addView(p_image); я получаю исключение цели.
Я отлаживаю и вижу, что p_image на самом деле не является нулевым или что-то в этом роде...
Я также пробовал:
ImageView test = new ImageView(this);
test.setImageResource(R.drawable.logo);
test.setLayoutParams( new ViewGroup.LayoutParams(WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.MATCH_PARENT));
prevHolder.addView(test);
и этот файл работал.
что может быть проблемой?..
Благодарю вас
изменить:
это исключение, которое я получаю: 05-22 17: 58: 25.835: ERROR/AndroidRuntime (11815): java.lang.IllegalStateException: указанный ребенок уже имеет родителя. Сначала вы должны вызвать removeView() для родительского родителя.
Я понимаю, что это потому, что изображение уже используется в галерее. так как я могу решить это?
Благодарю вас
Я думаю, вы можете это исправить, передав Drawable вашему методу вместо ImageView, затем создайте локальную переменную ImageView и используйте метод setImageDrawable (Drawable drawable) - после этого вы сможете добавить ImageView в LinearLayout - prevHolder.
Вы повторно используете одно или оба своих представления. Вы должны просто создать новый ImageView для добавления в RelativeLayout. Если вы хотите перекодировать представления, которые больше не являются частью макета, вы должны явно удалить их из своего родителя, вызвав parent.removeView(view)