Мой main.xml макет просто содержит две кнопки и область содержимого , которая показана ниже:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/myBtns"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<Button
android:id="@+id/btn_one"
android:layout_width="100dip"
android:layout_height="30dip"
android:text="button one"
/>
<Button
android:id="@+id/btn_two"
android:layout_width="100dip"
android:layout_height="30dip"
android:text="button two"
/>
</LinearLayout>
<LinearLayout
android:id="@+id/content_area"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<!--different button press will embed different content here-->
</LinearLayout>
</LinearLayout>
Я хотел бы создать свою собственную вкладку , чтобы каждое нажатие кнопки обновляло содержимое (content_area
) под кнопками. Поэтому я подготовил два других макета контента:
content_one.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<TextView.../>
<Button .../>
</LinearLayout>
content_two.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<Gallery.../>
<Button .../>
</LinearLayout>
Со всеми моими простыми кодами, показанными выше, я хотел бы реализовать функцию, которая:
in main.xml :
при нажатии button_one
, content_one.xml будет добавлено в content_area
из main.xml ;
при нажатии button_two
значение content_area
из main.xml будет обновлено до content_two.xml
Что означает использование кнопки для создания функции, подобной табуляции .
Я пытался:
button_one.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
LayoutInflater inflater = (LayoutInflater)MyActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View inflatedView = inflater.inflate(R.layout.content_one, null);
LinearLayout contentArea= (LinearLayout) findViewById(R.id.content_area);
contentArea.addView(inflatedView);
}
});
button_two.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
LayoutInflater inflater = (LayoutInflater)MyActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View inflatedView = inflater.inflate(R.layout.content_two, null);
LinearLayout contentArea= (LinearLayout) findViewById(R.id.content_area);
contentArea.addView(inflatedView);
}
});
Код выше частично работает , я имею в виду, что при нажатии button_one
, content_area
показывает content_one.xml , или при нажатии button_two
, content_area
показывает content_two.xml, они работают нормально!
Но если сначала нажать одну из кнопок, а затем нажать другую, содержимое останется в содержимом, вызванном старыми кнопками. Например, при первой загрузке приложения, если сначала нажать button_one
, отображается content_one.xml , после этого, если я нажму button_two
, содержимое будет оставаться в content_one.xml .
Мой вопрос: как удалить старый контент и показать новый контент при использовании LayoutInflater ?