动态imageView。指定的孩子已经有父母

时间:2017-09-23 19:19:53

标签: java android android-layout android-linearlayout android-relativelayout

我试图添加动态图片。

这是我面临的错误

  

引起: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);

            }
}

1 个答案:

答案 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);
}