2010-07-09 100 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); 
    } 

} 
相关问题