добавление ImageView к linearlayout вызывает целевое исключение

1

Привет всем

У меня есть массив 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() для родительского родителя.

Я понимаю, что это потому, что изображение уже используется в галерее. так как я могу решить это?

Благодарю вас

  • 0
    prevHolder может быть нулевым, если вы используете R.id, который не используется в XML-файле R.layout.preview. Кроме того, вы можете получить гораздо больше информации, если получите полное имя исключения из LogCat. Если это NullReferenceException, то это то, что я описал, но это может быть что-то еще полностью
  • 0
    Я проверил, что prevHolder не равен нулю ... Исключением является исключение таргетинга. но я не вижу ее деталей ...
Показать ещё 2 комментария
Теги:
android-gallery

2 ответа

2
Лучший ответ

Я думаю, вы можете это исправить, передав Drawable вашему методу вместо ImageView, затем создайте локальную переменную ImageView и используйте метод setImageDrawable (Drawable drawable) - после этого вы сможете добавить ImageView в LinearLayout - prevHolder.

  • 0
    Это очень много, что я сделал! Спасибо
1

Вы повторно используете одно или оба своих представления. Вы должны просто создать новый ImageView для добавления в RelativeLayout. Если вы хотите перекодировать представления, которые больше не являются частью макета, вы должны явно удалить их из своего родителя, вызвав parent.removeView(view)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню