Я новичок в разработке Android.Inflating GUI работает только один раз, как получилось?
У меня есть активность, к которой я хочу добавить некоторые GUI-элементы.
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dial_details);
if (android.os.Build.VERSION.SDK_INT >= 11)
// Show the Up button in the action bar.
getActionBar().setDisplayHomeAsUpEnabled(true);
inflateNewRow();
inflateNewRow();
}
private void inflateNewRow()
{
LinearLayout thisLayout = (LinearLayout) findViewById(R.id.dial_details_layout);
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// Before edit!
//inflater.inflate(R.layout.dialitem_details, thisLayout);
// After edit, which works!
inflater.inflate(R.layout.dialitem_details, null);
thisLayout.addView(ll);
}
Первый звонок для раздуванияNewRow добавляет строку, отлично. Второй звонок, кажется, ничего не делает! Никакого исключения, ни одна строка не добавляется.
Я добавил звонок setVisibility, чтобы убедиться. Это не имеет значения.
Может показаться странным назвать inflateNewRow дважды, но это на самом деле только для этого примера. Он должен быть вызван один раз в onCreate, затем из меню click-event. Однако этот простой пример воссоздает проблему.
Это маленькая точка зрения, что это должен быть добавлен:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="2"
android:ems="10"
android:inputType="number" >
<requestFocus />
</EditText>
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
в этом:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/dial_details_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".DialDetailsActivity" >
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CheckBox" />
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="number" >
<requestFocus />
</EditText>
</LinearLayout>
Любые идеи, почему появляется только первая строка/добавляется?
Спасибо за ваш ответ. Я попробовал ваше предложение. К сожалению, это не имело значения. Я обновил код в вопросе до вашего предложения. – kaze
@kaze Позвольте мне проверить код один раз –
@kaze Я неправильно понял ваше требование alonf wd изменения, которые вам также необходимо добавить в группу просмотра, вот пример http://stackoverflow.com/questions/6661745/dynamically-adding- a-child-to-linearlayout-with-getting-every-childs-position –