android – issue:指定的子节点已经有父节点.您必须首先在孩子的父母上调用removeView()

android – issue:指定的子节点已经有父节点.您必须首先在孩子的父母上调用removeView(),第1张

概述我开发应用程序以将动态数据添加到多个表视图.结构如下. 我在onPostExecute中的代码是: protected void onPostExecute(List<String> results){int ind,i = 0;ScrollView sv=null;TableLayout tl=null;TableRow tr = null;int mjsonlength=result 我开发应用程序以将动态数据添加到多个表视图.结构如下.

我在onPostExecute中的代码是:

protected voID onPostExecute(List<String> results){int ind,i = 0;ScrollVIEw sv=null;tableLayout tl=null;tableRow tr = null;int mJsonlength=results.size();if(results!=null){ tableLayout indextl=(tableLayout)findVIEwByID(R.ID.indextablelayout);    tableRow indextr=new tableRow(SubProducts.this);    //indext1.movetoFirst();    linearLayout llt=(linearLayout)findVIEwByID(R.ID.alltablell);    //for(int f=0;f<mJsonlength;f++){        for( ind=0;ind<indexTitle.size();ind++)        {            TextVIEw indextv=new TextVIEw(SubProducts.this);            indextv.setBackgroundResource(R.drawable.greenbg);            indextv.setHeight(25);            indextv.setWIDth(50);            indextv.setID(6);            indextv.setTextcolor(color.WHITE);            indextv.setText(indexTitle.get(ind));            indextv.setpadding(20,10,6,3);            indextr.addVIEw(indextv);            indextl.addVIEw(indextr,6);            sv=new ScrollVIEw(SubProducts.this);             tl=new tableLayout(SubProducts.this);             for( i=0;i<mJsonlength;i++){                    tr=new tableRow(SubProducts.this);                    if(ind==i)  {                        relativeLayout rl=new relativeLayout(SubProducts.this);                        Resources res = getResources(); //resource handle                          rl.setBackgroundResource(R.drawable.prd_Box);                         relativeLayout.LayoutParams newParams1 = new relativeLayout.LayoutParams(                                    relativeLayout.LayoutParams.WRAP_CONTENT,relativeLayout.LayoutParams.WRAP_CONTENT);                            image=new ImageVIEw(SubProducts.this);                            image.setLayoutParams(newParams1);                            image.setID(1);                            image.setimageBitmap(bmp);                            image.setpadding(5,20,5,5);                            rl.addVIEw(image,1);                          relativeLayout.LayoutParams lprams = new relativeLayout.LayoutParams(                                    relativeLayout.LayoutParams.WRAP_CONTENT,relativeLayout.LayoutParams.WRAP_CONTENT);                            lprams.addRule(relativeLayout.RIGHT_OF,1);                          TextVIEw tv1=new TextVIEw(SubProducts.this);                        Spanned marked_up = HTML.fromHTML(description.get(i));                        tv1.setText((marked_up.toString()).substring(1,170).replaceAll("&nbsp;",""));                        tv1.setLayoutParams(lprams);                        tv1.setID(2);                        tv1.setHeight(150);                        tv1.setWIDth(130);                        tv1.setpadding(20,10);                        rl.addVIEw(tv1,2);                         relativeLayout.LayoutParams newParams = new relativeLayout.LayoutParams(                                    relativeLayout.LayoutParams.WRAP_CONTENT,relativeLayout.LayoutParams.WRAP_CONTENT);                         newParams.addRule(relativeLayout.BELOW,2);                        TextVIEw tv=new TextVIEw(SubProducts.this);                        tv.setText(productname.get(i));                        tv.setLayoutParams(newParams);                        tv.setTextcolor(color.WHITE);                        tv.setID(3);                        tv.setpadding(10,10);                        rl.addVIEw(tv,3);                        tr.addVIEw(rl);                        tr.setpadding(5,10);                    }                    tl.addVIEw(tr);            }             sv.addVIEw(tl);                llt.addVIEw(sv);        }    }

}

我得到的错误如下:

03-16 06:27:07.452: E/AndroIDRuntime(7233): FATAL EXCEPTION: main      03-16 06:27:07.452: E/AndroIDRuntime(7233): java.lang.IllegalStateException: The 03-16 06:27:07.452: E/AndroIDRuntime(7233): FATAL EXCEPTION: main03-16 06:27:07.452: E/AndroIDRuntime(7233): java.lang.IllegalStateException: The specifIEd child already has a parent. You must call removeVIEw() on the child's parent first.03-16 06:27:07.452: E/AndroIDRuntime(7233):     at androID.vIEw.VIEwGroup.addVIEwInner(VIEwGroup.java:3339)03-16 06:27:07.452: E/AndroIDRuntime(7233):     at androID.vIEw.VIEwGroup.addVIEw(VIEwGroup.java:3210)03-16 06:27:07.452: E/AndroIDRuntime(7233):     at androID.Widget.tableLayout.addVIEw(tableLayout.java:429)03-16 06:27:07.452: E/AndroIDRuntime(7233):     at androID.vIEw.VIEwGroup.addVIEw(VIEwGroup.java:3155)03-16 06:27:07.452: E/AndroIDRuntime(7233):     at androID.Widget.tableLayout.addVIEw(tableLayout.java:411)03-16 06:27:07.452: E/AndroIDRuntime(7233):     at androID.vIEw.VIEwGroup.addVIEw(VIEwGroup.java:3131)03-16 06:27:07.452: E/AndroIDRuntime(7233):     at androID.Widget.tableLayout.addVIEw(tableLayout.java:402)03-16 06:27:07.452: E/AndroIDRuntime(7233):     at com.example.nutritionplusapp.SubProducts$LongRunningGetIO1.onPostExecute(SubProducts.java:227)03-16 06:27:07.452: E/AndroIDRuntime(7233):     at com.example.nutritionplusapp.SubProducts$LongRunningGetIO1.onPostExecute(SubProducts.java:1)03-16 06:27:07.452: E/AndroIDRuntime(7233):     at androID.os.AsyncTask.finish(AsyncTask.java:631)03-16 06:27:07.452: E/AndroIDRuntime(7233):     at androID.os.AsyncTask.access0(AsyncTask.java:177)03-16 06:27:07.452: E/AndroIDRuntime(7233):     at androID.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)03-16 06:27:07.452: E/AndroIDRuntime(7233):     at androID.os.Handler.dispatchMessage(Handler.java:99)03-16 06:27:07.452: E/AndroIDRuntime(7233):     at androID.os.Looper.loop(Looper.java:137)03-16 06:27:07.452: E/AndroIDRuntime(7233):     at androID.app.ActivityThread.main(ActivityThread.java:5041)03-16 06:27:07.452: E/AndroIDRuntime(7233):     at java.lang.reflect.Method.invokeNative(Native Method)03-16 06:27:07.452: E/AndroIDRuntime(7233):     at java.lang.reflect.Method.invoke(Method.java:511)03-16 06:27:07.452: E/AndroIDRuntime(7233):     at com.androID.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)03-16 06:27:07.452: E/AndroIDRuntime(7233):     at com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:560)03-16 06:27:07.452: E/AndroIDRuntime(7233):     at dalvik.system.NativeStart.main(Native Method)03-16 06:32:07.586: I/Process(7233): Sending signal. PID: 7233 SIG: 903-16 06:32:08.522: E/Trace(7355): error opening trace file: No such file or directory (2)

循环变量值对于两个循环都应该相同Inorder获取相应产品的子产品.我正在与上述错误作斗争.任何有想法的人.Plz建议我适当的解决方案.谢谢提前.

编辑:

ArrayList<String> productname=new ArrayList<String>();ArrayList<String> description=new ArrayList<String>();ArrayList<String> indexTitle=new ArrayList<String>(); ArrayList<String> mStrings = new ArrayList<String>();

在doINBackground下:

JsONObject Json = array.getJsONObject(i);     manjson = Json.getJsONObject("product");     mStrings.add(manjson.getString("productimage"));     productname.add(manjson.getString("productname"));    indexTitle.add(manjson.getString("subcategoryID"));    description.add(manjson.getString("description"));
解决方法 好的第二个潜在问题也是:
indextl.addVIEw(indextr);

indextr会在每次循环迭代中添加,但它是相同的视图.您只能将一次视图添加到层​​次结构中.您可能希望每个循环迭代都有一个新实例.我不能肯定地说,但这可能是问题所在.

总结

以上是内存溢出为你收集整理的android – issue:指定的子节点已经有父节点.您必须首先在孩子的父母上调用removeView()全部内容,希望文章能够帮你解决android – issue:指定的子节点已经有父节点.您必须首先在孩子的父母上调用removeView()所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1123464.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存