Intereting Posts
Создание нового поля AVD-CPU / ABI показывает «Нет системных изображений», Как добавить изображение в расширяемый список в parent в android? Как обрабатывать сенсорные события на фрагменте? Как удалить строку таблицы в макете таблицы в android Не видя переходов Geofence в учебнике Google по Geofencing Android sql – как вы заказываете свой SQL-запрос несколькими столбцами Невозможно выполнить dex: несколько файлов dex определяют Lcom / google / android / gms / analytics / internal / Command SQLite, как получить все имена таблиц в базе данных? Android Nexus 7 DPI для Eclipse Как изменить цвет фона в закусочной? Выполните задачу по удалению в android Два вопроса о максимальных размерах кучи и доступной памяти в android Service.onDestroy () вызывается сразу после создания, в любом случае Служба выполняет свою работу Как сообщить своему пользовательскому FragmentPagerAdapter прекращение уничтожения моих фрагментов? Android, ListView IllegalStateException: «Содержимое адаптера изменилось, но ListView не получил уведомление»

Android: Можете ли вы вложить фрагменты?

Можно ли вставить Fragment в макет другого Fragment ? Кто-нибудь пробовал это?

Solutions Collecting From Web of "Android: Можете ли вы вложить фрагменты?"

В заключение! Обновление для Android 4.0 поставляется с поддержкой по умолчанию для вложенных фрагментов, также совместимых: Официальные NestedFragments . Более того, поддержка вложенных фрагментов объявлена ​​в последней 11-й версии библиотеки поддержки v4 !

Нет, фрагменты в настоящее время НЕ находятся в иерархии. Попытка иметь один фрагмент, встроенный в другой, может привести к проблемам, часто тонким.

Изменить: с ACLv11 это необходимо только при динамическом replace(...) ViewPagers .

Да, вы можете, но есть определенные способы, которые являются болью, но у меня есть даже встроенные FragmentViewPagers.

Если вы вставляете в XML, то когда макет раздувается, у вас не будет проблем.

Если вы вставляете фрагменты динамически в другой фрагмент, тогда вы получите проблемы! Хотя это возможно.

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

В FoodTestFeast встроены ViewPagers, которые удаляются и добавляются динамически.

My Base FragmentViewPager – Фрагмент, который содержит пейджер представления (у которого есть FragmentPagerAdapter)

Я еще не видел никаких сбоев, но дайте мне знать, если кто-то еще это сделает.

 /** * @project FoodFeast * @author chris.jenkins * @created Dec 28, 2011 */ package couk.jenxsolution.food.ui.fragments; import android.os.Bundle; import android.os.Handler; import android.support.v4.app.FragmentStatePagerAdapter; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.viewpagerindicator.TabPageIndicator; import couk.jenxsolution.food.R; import couk.jenxsolution.food.app.FoodApplication; /** * @author chris.jenkins */ public class QuizPagerBaseFragment extends QuizBaseFragment { // Data private FragmentStatePagerAdapter mAdapter = null; // Views private int layoutRes; private View mRootView; private ViewPager mPager; private TabPageIndicator mIndicator; // Handlers private final Handler handler = new Handler(); private Runnable runPager; private boolean mCreated = false; /** * @see android.support.v4.app.Fragment#onCreateView(android.view.LayoutInflater, * android.view.ViewGroup, android.os.Bundle) */ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) mRootView = inflater.inflate(layoutRes, container, false); mPager = (ViewPager) mRootView.findViewById(R.id.pager); mPager.setOffscreenPageLimit(2); mIndicator = (TabPageIndicator) mRootView.findViewById(R.id.indicator); mIndicator.setTypeface(FoodApplication.getInstance().getTFs().getTypeFaceBold()); return mRootView; } /** * @see android.support.v4.app.Fragment#onActivityCreated(android.os.Bundle) */ @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); if (runPager != null) handler.post(runPager); mCreated = true; } /** * @see android.support.v4.app.Fragment#onPause() */ @Override public void onPause() { super.onPause(); handler.removeCallbacks(runPager); } /** * Set the ViewPager adapter from this or from a subclass. * * @author chris.jenkins * @param adapter */ protected void setAdapter(FragmentStatePagerAdapter adapter) { mAdapter = adapter; // mAdapter.notifyDataSetChanged(); runPager = new Runnable() { @Override public void run() { mPager.setAdapter(mAdapter); mIndicator.setViewPager(mPager); // mAdapter.notifyDataSetChanged(); mIndicator.setVisibility(View.VISIBLE); } }; if (mCreated) { handler.post(runPager); } } /** * Has to be set before onCreateView * * @author chris.jenkins * @param layoutRes */ protected void setLayoutRes(int layoutRes) { this.layoutRes = layoutRes; } } 

FYI, ваш макет должен выглядеть так (или аналогичный): ПРИМЕЧАНИЕ. Индикатор = GONE!

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <com.viewpagerindicator.TabPageIndicator android:id="@+id/indicator" android:layout_width="match_parent" android:layout_height="wrap_content" android:visibility="gone"/> <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" /> </LinearLayout> 

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

Очевидно, что в деятельности вы можете использовать getFragmentManager () или getSupportFragmentManager (), чтобы отличить две группы фрагментов.

Вероятно, это устаревшее использование, но оно решает многие ситуации.