大家好
我有一组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实际上不是null或类似的东西......
我也尝试过:
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 :(得分:2)
我认为您可以通过将Drawable传递给您的方法而不是ImageView来修复它,然后创建本地ImageView变量并使用setImageDrawable(Drawable drawable)方法 - 之后您应该能够将ImageView添加到LinearLayout - prevHolder。 / p>
答案 1 :(得分:1)
您正在重复使用其中一个或两个观点。您应该只是实例化一个新的ImageView以添加到RelativeLayout。如果要回收不再属于布局的视图,则必须通过调用parent.removeView(view)
将它们从父项中显式删除。