我在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(" ","")); 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()所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)