Как вы пытаетесь добавить несколько копий в «корневую» LinearLayout?
Если вы просто пытаетесь вызвать addView(newView)
дважды, то вы пытаетесь добавить одну и ту же ссылку на объект View.в два разаЭто неправильно, потому что вы пытаетесь добавить одну и ту же ссылку на объект View дважды.Я не совсем уверен, каково определенное поведение, когда вы делаете это, но я предполагаю, что addView () не выполняет никаких действий во второй раз, потому что он проверяет, что он уже содержит ссылку на newView
(был бы признателен, если кто-то мог подтвердитьправильно это или неправильно).
Так что вам нужно раздуть два отдельных экземпляра вашего ребенка. Я думаю, используя, скажем:
View newView0 = View.inflate(this, R.layout.alarm, null);
View newView1 = View.inflate(this, R.layout.alarm, null);
, а затем добавьте их по отдельности.
Я думаю, что тогда вы могли бы обойти проблему дубликатов идентификаторов, вызвав findViewById()
для фактических дочерних представлений, в отличие от родительского:
newView0.findViewById( someID )
Update : Только что проверил код в Eclipse для вас.Я добавил два дочерних представления, созданные из вашего XML-файла, в LinearLayout, а затем изменил свойство (цвет фона на синий) одного из представлений во втором дочернем представлении:
LinearLayout root = new LinearLayout(this);
LinearLayout newView0 = (LinearLayout)View.inflate(this, R.layout.main, null);
LinearLayout newView1 = (LinearLayout)View.inflate(this, R.layout.main, null);
root.addView(newView0);
root.addView(newView1);
setContentView(root);
newView1.findViewById(R.id.view_monday).setBackgroundColor(0xff0000ff);