Как определить макет фрагмента из XML?
Я пытаюсь определить макет фрагмента в XML так же, как я определил макет моего представления.
Возможно ли это? Я пробовал несколько вещей, но никто из них, похоже, не работает.
Схема моей работы выглядит следующим образом (main.xml):
<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<fragment
xmlns:android="http://schemas.android.com/apk/res/android"
android:name="full.lommeregner.Lommeregnerrv2Activity"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/lommeregnerv2">
</fragment>
</ListView>
Теперь, поскольку я не большой поклонник создания макетов через необработанный код Java, я попытался определить свой фрагмент следующим образом (fragment_lommeregner.xml):
<fragment
xmlns:android="http://schemas.android.com/apk/res/android"
android:name="full.lommeregner.Lommeregnerrv2Activity"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/lommeregnerv2">
<!-- my content was located here (some textviews, buttons and so on). -->
</fragment>
Я что-то делаю неправильно? Как определить макет фрагмента через XML?
Ответы
Ответ 1
Фрагмент работает так же, как и действие, в котором вам нужен файл класса Java, который будет работать с ним. вы не можете создать фрагмент, просто создав макет фрагмента - вам нужен класс для вашего фрагмента:
- Создайте XML-документ макета и подкласс Activity для вашей деятельности.
- Создайте макет XML и подкласс Fragment для вашего фрагмента
- Свяжите эти два вместе в своем макете Activity XML (или используя FragmentTransaction, если вы хотите сделать это в Java-коде).
Если вы еще этого не сделали, прочитайте, перечитайте и перескажите все на этой странице:
https://developer.android.com/guide/components/fragments.html
Там много, но фрагменты являются неотъемлемой частью приложений для Android, поэтому требуется чтение. Хорошей новостью является то, что основы фрагментов довольно просты.
Ответ 2
Просто добавьте в свой тег <fragment>
как свойство:
tools:layout="@layout/your_layout_xml"
И в контейнере тегов main.xml(или <fragment>
) в родительский контейнер (в данном случае ListView
):
xmlns:tools="http://schemas.android.com/tools"