Intereting Posts
InputType = "number" с более чем одной строкой Использование Fresco Facebook для загрузки растрового изображения Как интегрировать prestashop с Android? Как переупаковать HttpClient 4.3.1 и удалить зависимости от ведения общедоступных записей? Как получить текущий контекст активности переднего плана в android? Полноэкранное приложение, макет сдвинут вниз по высоте панели уведомлений Определение регулярного выражения javascript для Android Отключить всплывающее окно «low battery» для Android Прогрессивное рендеринг изображений, загрузка пикселя изображения по пикселю и обновление изображения в imageLoader Я работал над проектом Android, чтобы отслеживать мою прогулку. Есть ли способ получить точность менее 10 метров на всех телефонах Android – Не удалось найти google-play-services_lib.apk! ошибка Невозможно прочитать имя пакета из AndroidManifest.xml Android: отображать .mht или .mhtml в Webview в приложении Доступ к Виртуальному принтеру Google в android Android save Checkbox Состояние в 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 (), чтобы отличить две группы фрагментов.

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