我试图添加动态图片。
这是我面临的错误
引起:java.lang.IllegalStateException:指定的子级 已经有了父母。您必须在孩子的父母上调用removeView() 第一
我也添加了
U
但没有解决我的问题
((ViewGroup)imageView.getParent()).removeView(imageView);
这是XML:
@Override
protected void onActivityResult ( int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == ConstantsCustomGallery.REQUEST_CODE && resultCode == Activity.RESULT_OK && data != null) {
ArrayList<Image> images = data.getParcelableArrayListExtra(ConstantsCustomGallery.INTENT_EXTRA_IMAGES);
for (int i = 0; i < images.size(); i++) {
filePath = Uri.fromFile(new File(images.get(i).path));
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(200, 200);
imageView.setLayoutParams(lp);
((ViewGroup)imageView.getParent()).removeView(imageView);
Glide.with(MainActivity.this).load(filePath).override(200,200).crossFade().into(imageView);
linearLayout.addView(imageView);
}
buttonConfirm.setVisibility(View.VISIBLE);
progressDialog.setProgress(0);
}
}
答案 0 :(得分:2)
问题是您是一次又一次地添加相同的图像视图,这是不可能的。您需要创建新的ImageVIew并将其添加到任何您想要的地方
for (int i = 0; i < images.size(); i++) {
filePath = Uri.fromFile(new File(images.get(i).path));
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(200, 200);
ImageView iv = new ImageView(context); // context mean YourActivity.this or context object
iv.setLayoutParams(lp);
//((ViewGroup)imageView.getParent()).removeView(imageView);
Glide.with(MainActivity.this).load(filePath).override(200,200).crossFade().into(iv);
linearLayout.addView(iv);
}