Android: Add two text views programmatically

China☆狼群 提交于 2020-04-04 11:39:52

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!