2010-07-09 107 views
12

我想以編程方式將視圖添加到線性佈局。Android:以編程方式添加兩個文本視圖

LinearLayout layout  = (LinearLayout) findViewById(R.id.info); 
    String [] informations = topOffer.getInformations(); 
    TextView informationView; 
    View line = new View(this); 
    line.setLayoutParams(new LayoutParams(1, LayoutParams.FILL_PARENT)); 
    line.setBackgroundColor(R.color.solid_history_grey); 
    for (int i = 0; i < informations.length; i++) { 
     informationView = new TextView(this); 
     informationView.setText(informations[i]); 
     layout.addView(informationView, 0); 
     layout.addView(line, 1); 
    } 

首先,我只添加了informationsView,並且一切正常。在添加行視圖之後,它會崩潰並出現以下錯誤:

java.lang.IllegalStateException:指定的子項已具有父項。您必須先調用子對象的父對象的removeView()。

所以,我想addView(視圖V,INT指數),但它具有相同的消息墜毀...

有人偷的解決方案?

感謝, 馬丁

回答

2

你不能多次在同一父視圖添加相同的子視圖。 您需要每次創建新視圖或膨脹新視圖。

12

正如gpmoo7說,你需要在循環創建每次一個新視圖

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.linear); 

    LinearLayout layout = (LinearLayout) findViewById(R.id.linear); 

    String[] informations = new String[] { "one", "two", "three" }; 
    TextView informationView; 

    for (int i = 0; i < informations.length; i++) { 
     View line = new View(this); 
     line.setLayoutParams(new LayoutParams(1, LayoutParams.MATCH_PARENT)); 
     line.setBackgroundColor(0xAA345556); 
     informationView = new TextView(this); 
     informationView.setText(informations[i]); 
     layout.addView(informationView, 0); 
     layout.addView(line, 1); 
    } 

} 
相關問題