Фрагменты и правильный дизайн - PullRequest
2 голосов
/ 05 ноября 2011

Извините, если вопрос был неясным.В моем приложении у меня есть 3 вкладки на панели управления, далее каждая вкладка имеет отдельный макет XML с двумя фрагментами.Для первых двух вкладок макет аналогичен, но третья вкладка имеет отдельный макет xml. На первой вкладке я делаю остальные вызовы и получаю данные для отображения.Левый фрагмент отображает список папок, а правый фрагмент отображает список файлов.Tab2 такой же, но отображает данные с SD-карты.Это в основном файловый менеджер.

Третья вкладка - это страница поиска, которая полностью отличается от первых двух фрагментов.

Ниже приводится мой вопрос.

  1. Я хочу знать, могу ли я использоватьразличная активность для каждой из вкладок?, это правильный дизайн?
  2. Поскольку я использую основной актив для создания макетов, необходимых для фрагментов, у меня теперь есть проблема с третьей вкладкой, причина в том, чтоXML-макет и фрагменты классов (код) полностью изменены для третьей вкладки.Вот содержимое XML-файла.

макет для первых двух вкладок:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/frags1">
   <fragment class="TitlesFragment"

            android:id="@+id/browse_title"
            android:visibility="gone"
            android:layout_marginTop="?android:attr/actionBarSize"
            android:layout_height="match_parent" android:layout_width="320dip"/>

    <fragment class="ContentFragment"

            android:id="@+id/browse_content"  
            android:visibility="gone"
            android:layout_marginTop="?android:attr/actionBarSize"
            android:layout_height="match_parent" android:layout_width="match_parent">
    </fragment>    
</LinearLayout>

Layout for the third tab:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/settings" 
 android:background="@drawable/window"
 android:orientation="horizontal" 
 android:layout_width="match_parent" 
 android:layout_height="wrap_content" 
 android:baselineAligned="true">

    <fragment class="SearchFragment"                  
            android:id="@+id/search_title"
            android:visibility="gone"
            android:layout_marginTop="?android:attr/actionBarSize"
            android:layout_weight="1"
            android:layout_height="match_parent" 
            android:layout_width="700dp"
            android:paddingRight="5dip"/>

    <fragment class="SearchContentFragment"
            android:id="@+id/searchbrowse_content" 
            android:visibility="gone"
            android:layout_marginTop="?android:attr/actionBarSize"
            android:layout_weight="1"      
            android:layout_width="match_parent"    
            android:layout_height="match_parent"/>     
</LinearLayout>

Поэтому при переходе с первой вкладки на вкладку 3 (поиск) пользовательский интерфейс отображается правильно, но я не могу вернуться с tab3 на tab1.Чтобы это исправить, я переместил фрагменты из XML-файлов и сделал это в основном коде активности.Я обеспокоен, потому что я не уверен, является ли это правильным дизайном.

Кроме того, ниже приведен фрагмент кода.

switch(nTabSelected)
{
    case ConnectedConstants.BROWSE:
    if (getFragmentManager().findFragmentById(R.id.browse_title) == null)
    {
     setContentView(CreateMainLayout());
    }
    TitlesFragment titleFrag = (TitlesFragment) getFragmentManager()
    .findFragmentById(R.id.browse_title);
    titleFrag.resetCurPosition();
    titleFrag.setCategory(nTabSelected);
    if (bLoggedin) {
    titleFrag.selectPosition(0);
    }
   break;

Каждый раз, когда пользователь нажимает на вкладку, я раздуваю xml дляэта вкладка perticulat.Следующий вопрос, который я ранее сказал, заключается в том, что я получаю данные с сервера, используя вызовы rest для обновления фрагментов tab1, поскольку я использую фрагменты списка для tab1 и tab2, я просто делаю setListAdapter, но с этим я пытаюсь понять, могу ли яреализовать backstack, или мне нужен новый фрагмент транзакции с каждым щелчком элемента списка, а затем добавить фрагмент в backstack.

Дайте мне знать, если мой вопрос все еще звучит неясным.

Спасибо, Харша

1 Ответ

1 голос
/ 31 января 2012

Мы все делали неправильно, мы пытались раздувать разные xml-файлы по нажатию каждой вкладки, простое решение - создать один XML-файл со всеми фрагментами и скрыть / показать их при нажатии вкладки на панели действий.

Мы решили с одним основным заданием, четырьмя различными вкладками, одним основным xml, показывающим все фрагменты (8).

Спасибо, Харша

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