Извините, если вопрос был неясным.В моем приложении у меня есть 3 вкладки на панели управления, далее каждая вкладка имеет отдельный макет XML с двумя фрагментами.Для первых двух вкладок макет аналогичен, но третья вкладка имеет отдельный макет xml. На первой вкладке я делаю остальные вызовы и получаю данные для отображения.Левый фрагмент отображает список папок, а правый фрагмент отображает список файлов.Tab2 такой же, но отображает данные с SD-карты.Это в основном файловый менеджер.
Третья вкладка - это страница поиска, которая полностью отличается от первых двух фрагментов.
Ниже приводится мой вопрос.
- Я хочу знать, могу ли я использоватьразличная активность для каждой из вкладок?, это правильный дизайн?
- Поскольку я использую основной актив для создания макетов, необходимых для фрагментов, у меня теперь есть проблема с третьей вкладкой, причина в том, что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.
Дайте мне знать, если мой вопрос все еще звучит неясным.
Спасибо, Харша