Предположим, что у меня есть простой XML-макет, такой как:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/my_container"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<LinearLayout android:id="@+id/leftContainer"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Col A - Text 1"
/>
</LinearLayout>
<LinearLayout android:id="@+id/rightContainer"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Col B - Text 1"
/>
</LinearLayout>
</LinearLayout>
Затем я хочу добавить TextView в rightContainer LinearLayout. В настоящее время я делаю это безуспешно:
LinearLayout container = (LinearLayout) findViewById(R.id.rightContainer);
TextView textToAdd = new TextView(this);
textToAdd.setText("Col B - Text 2");
container.addView(textToAdd);
Я посмотрел LayoutInflater, но не уверен, как я буду использовать его здесь. Любая помощь будет оценена, спасибо! Если я попытаюсь вызвать setContentView (контейнер), я получаю ошибку Force Close.
Не вызывайте setContentView(), если вы используете findViewById(), тогда этот вид уже находится внутри вашего текущего содержимого.
Добавление представлений отлично работает. Весь макет XML - это описание представлений для создания и добавления в иерархию. Удостоверьтесь, что вы передаете правильные параметры макета при добавлении представления - здесь, поскольку контейнер LinearLayout, вы хотите LinearLayout.LayoutParams.
Вы не говорите, каким образом ваш код "неудачен", поэтому трудно помочь дальше.
Также вы можете использовать hierarchyviewer, чтобы посмотреть, что происходит в вашей иерархии просмотров.