Лучшая практика с фрагментами Android?

1

на данный момент я звоню и создаю такие фрагменты:

if (getSupportFragmentManager().findFragmentById(R.id.fragment_list) == null) {
     list = new MyListFragment();
     getSupportFragmentManager().beginTransaction().add(R.id.fragment_list, list).commit();
}

Но я задаюсь вопросом, называется ли это так называемой лучшей практикой, потому что мне кажется, что это очень шаблонный код. Есть ли лучшие способы?

Теги:
android-fragments

1 ответ

1
Лучший ответ

Используйте XML-макеты и классы фрагментов. Здесь я создаю макет с 2 фрагментами. Класс раздувает макет fragment_actionbarcompat.xml (этот код здесь не показан, а файл основного макета). И я создаю файл макета для деятельности, в которой размещаются 2 фрагмента.

Класс ActionBarCompatFragment переопределяет метод onCreateView для раздувания его макета. Это вводится в тег фрагмента в макете.

В вашем случае, как правило, вы не просто добавляете в обычный ListFragment, вы расширяете ListFragment и добавляете в него свой код. Это способ лучше поддерживать модные модели, такие как Model-View-Controller. Фрагменты предназначены для изолированных отсеков, поэтому вы можете повторно использовать их между действиями, если хотите. В большинстве случаев ваш класс будет придерживаться логики для загрузки данных, необходимых фрагменту.

ActionBarCompatFragment.java

@Override
public final View onCreateView(LayoutInflater inflater, ViewGroup root, Bundle savedInstanceState) {
    final int layoutId = R.layout.fragment_actionbarcompat;
    return inflater.inflate(layoutId, root, false);
}

Файл: activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <fragment
        android:id="@+id/ActionBarCompatFragment"
        android:layout_width="@dimen/ActionBarSize"
        android:layout_height="match_parent"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        class="com.packagename.app.ActionBarCompatFragment" >

        <!-- Preview: layout=@layout/fragment_actionbarcompat -->
    </fragment>

    <fragment
        android:id="@+id/ComposerFragment"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@id/ActionBarCompatFragment"
        class="com.packagename.app.ComposerFragment" >

        <!-- Preview: layout=@layout/fragment_composer -->
    </fragment>

</RelativeLayout>
  • 0
    Да, это то, что у меня есть. Приведенный выше код показывает мой Activity onCreate() который создает экземпляр MyListFragment extend ListFragment . Но я задавался вопросом, есть ли лучшие способы «вызвать» фрагмент помимо моего кода, опубликованного выше (проверить ноль, создать новый myfragment, начать, зафиксировать и т. Д.).
  • 0
    Используя способ XML, система Android создаст для вас фрагмент. Он в основном читает XML за кулисами и использует рефлексию для этого. Затем вы можете получить дескриптор самого фрагмента, вызвав Activity.getSupportFragmentManager (). FindFragmentById (R.id. *); (удалите Activity.getFragmentManager (), если не используете пакет поддержки)
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню