Работа с фрагментами - PullRequest
       19

Работа с фрагментами

2 голосов
/ 30 декабря 2011

Я нахожусь в процессе обучения Android портировать через приложение iOS, которое я создал.У меня возникли проблемы с пониманием того, как отображать сразу несколько активных действий на экране, будь то через ActivityGroup или FragmentActivity.ActivityGroup устарела, но почти кажется лучшим подходом.

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

Вот что я пытаюсь сделатьcreate:

Приложение должно быть разбито на три визуальных раздела: 1) Top 50dp для динамического баннера, который сохраняется.2) Основная область содержимого в середине для панели мониторинга в виде пейджера с иконками, которая позволяет переходить к другим действиям и заменяет себя.3) Нижняя панель музыкального проигрывателя 30 dp.

По сути, я хочу, чтобы панель объявлений и панель проигрывателя работали независимо от основной области содержимого.Например, когда кнопка нажата в области основного содержимого, я бы хотел, чтобы область основного содержимого была заменена новым действием, таким как просмотр списка треков, веб-просмотр, отображение карты и т. Д. Кнопка возврата вернетобласть основного содержимого на пейджер панели мониторинга.

В некоторых случаях я хотел бы иметь возможность скрыть верхнюю и нижнюю полосы, чтобы сделать область основного содержимого полноэкранным, а также в случаях, когда мне хотелось быактивность представлена ​​в полноэкранном режиме, чтобы визуально заменить все три (например, доступ к намерению составителя писем, намерению контактов и т. д.)

Мне удалось объединить FragmentActivity, которое разделяет приложение на верхний фрагмент, среднийпейджер, управляемый FragmentActivity, и нижний фрагмент, но, похоже, это не самый лучший подход, поскольку фрагменты не являются самими действиями, и замена пейджера представления новым действием потребует замены всей FragmentActivity непосредственно.

Кстати, что бы бЛучший подход к макету для реализации этого формата (с поддержкой 2.1+).

Спасибо, Джеймс

Добавлен текущий код:

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
    <fragment
        android:name="com.dmi.AnywhereArtist.AdFragment"
        android:layout_width="320dp"
        android:layout_height="50dp"
        android:id="@+id/ad_fragment" >
    </fragment>
    <android.support.v4.view.ViewPager
    android:layout_width="fill_parent" 
    android:layout_height="0dp" 
    android:id="@+id/main_pager"
    android:layout_weight="100" 
    android:background= "#00aa00" />
    <fragment
        android:name="com.dmi.AnywhereArtist.PlayerFragment"
        android:layout_width="fill_parent"
        android:layout_height="30dp"
        android:id="@+id/player_fragment" >
    </fragment>
</LinearLayout>

Ответы [ 2 ]

2 голосов
/ 30 декабря 2011

Использовать фрагменты.

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

Фрагменты решают эту проблему, позволяя вам брать модульные компоненты приложения и объединять их, сохраняя при этом все в одном действии.

То, что вы пытаетесь сделать, это именно то, для чего были созданы фрагменты.

(И чтобы получить поддержку 2.1+, используйте пакет поддержки: http://developer.android.com/sdk/compatibility-library.html. Однако имейте в виду, что пакет поддержки не поддерживает MapFragments.)

0 голосов
/ 30 декабря 2011

У меня возникли проблемы с пониманием, как отображать несколько активных действий одновременно

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

Мне удалось собрать FragmentActivity, которое разделяет приложение на верхний фрагмент, средний просмотрщик, управляемый FragmentActivity, и нижний фрагмент, но, похоже, это не самый лучший подход, поскольку фрагменты не являются действиями. сами по себе и замена пейджера представления новым действием потребует замены самой FragmentActivity.

Ваш описанный подход выглядит хорошо. Используйте фрагменты в ViewPager для вашей основной области. Воспользуйтесь пакетом поддержки Android, чтобы получить поддержку фрагментов, начиная с Android 1.6.

...