The specified child already has a parent錯誤



10-05 23:39:48.187: E/AndroidRuntime(12854): Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
10-05 23:39:48.187: E/AndroidRuntime(12854): at android.view.ViewGroup.addViewInner(ViewGroup.java:1976)
10-05 23:39:48.187: E/AndroidRuntime(12854): at android.view.ViewGroup.addView(ViewGroup.java:1871)
10-05 23:39:48.187: E/AndroidRuntime(12854): at android.view.ViewGroup.addView(ViewGroup.java:1828)
10-05 23:39:48.187: E/AndroidRuntime(12854): at android.view.ViewGroup.addView(ViewGroup.java:1808)
10-05 23:39:48.187: E/AndroidRuntime(12854): at com.solar.WaterLevelActivity.InitUnitTimeLowestWaterLevel(WaterLevelActivity.java:49)
10-05 23:39:48.187: E/AndroidRuntime(12854): at com.solar.WaterLevelActivity.InitView(WaterLevelActivity.java:30)
10-05 23:39:48.187: E/AndroidRuntime(12854): at com.solar.WaterLevelActivity.onCreate(WaterLevelActivity.java:25)
10-05 23:39:48.187: E/AndroidRuntime(12854): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
10-05 23:39:48.187: E/AndroidRuntime(12854): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
10-05 23:39:48.187: E/AndroidRuntime(12854): ... 11 more

補充說明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的父控件來實現)。運行時又不允許一個有父控件的子控件在有了一個父控件時,改變他的父控件。

解決方案:重新用布局文件實例化一個子控件,再添加到父控件上。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM