问题
I am trying to add Views to a linear layout programmatically.
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);
}
First, I have only added the informationsView, and everything worked fine. Butt after adding also the line-View, it crashed with the following error:
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
So I tried addView(View v, int index), but it crashed with the same message...
Has somebody a solution?
Thanks, Martin
回答1:
As gpmoo7 said you need to create every time a new view in the loop
@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);
}
}
回答2:
You can't add the same child view multiple times in the same parent view. You need to create a new view or inflate a new view every time.
来源:https://stackoverflow.com/questions/3210599/android-add-two-text-views-programmatically