Одинаковые фрагменты в одной задаче - PullRequest
3 голосов
/ 22 июля 2011

Я кодирую свое первое приложение для Android с фрагментами, и вот моя проблема.У меня есть основная деятельность и 3 фрагмента.Все 3 фрагмента одного класса, поэтому все 3 фрагмента имеют одинаковое расположение.Но мне нужно, чтобы каждый фрагмент имел разный заголовок в этом макете.Но я не могу выбрать TextView, который мне нужен, потому что все эти фрагменты TextViews имеют одинаковый идентификатор из-за одного и того же макета.Есть ли простой способ сделать это.

Спасибо

Ответы [ 3 ]

4 голосов
/ 22 июля 2011

Учитывая ваши фрагменты f1, f2, f3, вы можете попробовать f1.getView().findViewById(id), f2.getView().findViewById(id), f3.getView().findViewById(id), чтобы каждый раз уменьшать область поиска только до этого конкретного фрагмента.

Однако я думаю, что смысл использования фрагментов состоит в том, чтобы улучшить модульность и избежать таких вещей, как необходимость выставлять все представления в Activity. Вместо этого он может контролироваться Фрагментом. Вы могли бы разрешить представления внутри фрагмента, а затем дать метод setTitle() во фрагменте для использования действием.

1 голос
/ 22 июля 2011

Идентификатор не должен иметь значения, поскольку каждый класс будет раздувать свой экземпляр макета. Попробуйте, используя тот же идентификатор.

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

Если под «фрагментом» вы подразумеваете компонент пользовательского интерфейса, вы должны указать разные идентификаторы для каждого компонента в макете!

<LinearLayout
    android:id="@+id/LinearLayout"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

    <TextView
        android:id="@+id/header"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="#ff0000"
        android:text="Header"
        />

    <TextView
        android:id="@+id/body"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="#00ff00"
        android:text="Body"
        />

     <TextView
        android:id="@+id/footer"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="#0000ff"
        android:text="Footer"
        />

</LinearLayout>

Если вы имеете в виду другие фрагменты XML внутри основного макета XML, вы можете использовать один и тот же идентификатор, но в разных фрагментах XML!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...