补充说明:InitUnitTimeLowestWaterLevel()在OnCreate函数中被调用,用来初始化界面。实现的效果是动态添加界面。
下面是出错的代码:
View Code
1 private void InitUnitTimeLowestWaterLevel() {2 LinearLayout listMachines = (LinearLayout) findViewById(R.id.water_level_page_water_level_setting);3 LayoutInflater inflater = LayoutInflater.from(WaterLevelActivity.this);4 View tlWaterLevelInfo = inflater.inflate(R.layout.unit_time_water_level_item, null);5 listMachines.addView(tlWaterLevelInfo);6 listMachines.addView(tlWaterLevelInfo); //这个地方出错了。7 }
错误的原因:通过LayoutInflater实例化的一个布局(View)。被重复添加了两次。而一个View只能有一个父控件。当第二次添加的时候,又要改变这个控件的父控件(虽然是同一个父控件,但是也要通过改变该View的父控件来实现)。运行时又不允许一个有父控件的子控件在有了一个父控件时,改变他的父控件。
解决方案:重新用布局文件实例化一个子控件,再添加到父控件上。