Как обновить контент при нажатии кнопки в моем случае?(вкладка как функция) - PullRequest
0 голосов
/ 12 июля 2011

Мой 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="fill_parent"
        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>

Со всеми моими простыми кодами, показанными выше, я хотел бы реализовать функцию, которая:

в main.xml :

  • когдаbutton_one нажата, content_one.xml будет добавлено в content_area из main.xml ;

  • при нажатии button_two значение content_area из main.xml будет обновлено до content_two.xml

Что означает использование кнопки для создания функции, похожей на вкладку .

Мой вопрос заключается в том, как обновить content_area с помощью внешнего XML-файла макета (например, * 1057).* content_one.xml & content_two.xml ) был вставлен в content_area моего main.xml макета?

это:

button_one.setOnClickListener(new OnClickListener(){
    @Override
    public void onClick(View v){
        //What to do here?? to update the content_area in main.xml with an external xml layout
    }
});

---------------- ОБНОВЛЕНИЕ ----------------------------

Я пытался:

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);
        }
    });

Но это не работает, почему?

1 Ответ

0 голосов
/ 12 июля 2011

Вы можете использовать LayoutInflater для создания иерархии представления из файла XML. Следующий код возвращает мое представление XML.

LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View inflatedView = inflater.inflate(R.layout.content_one, null);

Первый параметр для надувания (...) - это xml-файл для надувания. Второй параметр является необязательным родителем для завышенного представления. В моем случае у меня его нет. Затем вы можете добавить представление в свою область контента.

contentArea.addView(inflatedView);
...