调用emoveAllViews();仍会导致IlLegalStateException:您必须首先对子对象的父级调用emoveView() [英] Calling removeAllViews(); still results in IllegalStateException:You must call removeView() on the child's parent first

查看:41
本文介绍了调用emoveAllViews();仍会导致IlLegalStateException:您必须首先对子对象的父级调用emoveView()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不确定为什么会发生这种情况,但我收到错误消息:调用layout.removeAllViews();仍然会导致IllegalStateException: The specified child already has a parent.您必须首先在子级的父级上调用emoveView()。

奇怪的是,我在添加新的之前调用了:emoveAllViews():

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.download);

...

    ImageView imageViewz = (ImageView) findViewById(R.id.imageView6); 
            Picasso.with(context).load(background).into(imageViewz);

LinearLayout layout = new LinearLayout(Download.this);
                layout.setId(R.id.download);
                LayoutParams layoutParams 
                 = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
                layout.setLayoutParams(layoutParams);
                layout.setOrientation(LinearLayout.VERTICAL);
                LayoutParams imageViewLayoutParams 
                 = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
                imageViewz.setLayoutParams(imageViewLayoutParams);
                layout.removeAllViews();
                layout.addView(imageViewz);
                setContentView(layout);
但我仍然收到致命错误...所以我不确定发生这种情况的确切原因。

如有任何建议,我们不胜感激。

推荐答案

您的问题与layout无关。您的问题是imageViewz。它已经有了父级,这就是触发您的异常的原因。在将layout添加到layout之前,您需要从其当前父级中删除imageViewz

这篇关于调用emoveAllViews();仍会导致IlLegalStateException:您必须首先对子对象的父级调用emoveView()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆