У меня есть активность, и я могу показать некоторые фрагменты в framelayout для этой активности. Я хотел бы поставить viewpager, состоящий из фрагментов внутри фрагмента, вместо FragmentActivity. Как это может быть сделано?Как поместить viewpager внутри фрагмента в android?
8
A
ответ
31
Чтобы иметь фрагмент ViewPager
и иметь фрагменты в этом ViewPager
, вам нужно использовать вложенные фрагменты. Если ваш minSdkVersion
равен 17 или выше, встроенная реализация фрагментов поддерживает вложенные фрагменты. В противном случае вам нужно будет использовать фрагменты support-v13
(или support-v4
).
Тогда вам просто нужно дать getChildFragmentManager()
к вашему FragmentPagerAdapter
или FragmentStatePagerAdapter
:
/***
Copyright (c) 2012 CommonsWare, LLC
Licensed under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance with the License. You may obtain a copy
of the License at http://www.apache.org/licenses/LICENSE-2.0. Unless required
by applicable law or agreed to in writing, software distributed under the
License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
OF ANY KIND, either express or implied. See the License for the specific
language governing permissions and limitations under the License.
From _The Busy Coder's Guide to Android Development_
http://commonsware.com/Android
*/
package com.commonsware.android.pagernested;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class PagerFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState) {
View result=inflater.inflate(R.layout.pager, container, false);
ViewPager pager=(ViewPager)result.findViewById(R.id.pager);
pager.setAdapter(buildAdapter());
return(result);
}
private PagerAdapter buildAdapter() {
return(new SampleAdapter(getActivity(), getChildFragmentManager()));
}
}
(от this sample project)
Смежные вопросы
- 1. Как вы можете поместить ViewPager внутри фрагмента?
- 2. Как я могу поместить ViewPager внутри фрагмента?
- 3. Android обновить ViewPager внутри фрагмента
- 4. Android - Фрагмент внутри фрагмента внутри задач ViewPager
- 5. ViewPager внутри фрагмента (NestedFragments)
- 6. ViewPager внутри фрагмента
- 7. Как установить ViewPager внутри фрагмента
- 8. AsynkTask внутри фрагмента в ViewPager
- 9. Android: Запуск ActionMode внутри фрагмента ViewPager
- 10. Android - Animate RecyclerView Элемент фрагмента внутри ViewPager
- 11. Android - Сохранение состояния Viewpager внутри фрагмента
- 12. Android ViewPager внутри ViewPager
- 13. как начать деятельность внутри фрагмента viewpager
- 14. Раздувание фрагментов внутри фрагмента ViewPager
- 15. Обновление ListView внутри фрагмента (ViewPager)
- 16. Android: Как получить активность родителя из фрагмента внутри ViewPager
- 17. Замена фрагмента фрагмента ViewPager
- 18. Android: фрагменты tablayout/viewpager внутри фрагмента или активности
- 19. Не удается получить поддержку FragmentManager внутри фрагмента - ViewPager внутри фрагмента
- 20. Навигация от фрагмента ViewPager до фрагмента в Android
- 21. Android - smoothScrollToPosition внутри дочернего фрагмента Фрагмент в ViewPager
- 22. Android getParentFragment() возвращает null в ViewPager внутри фрагмента
- 23. getSupportFragmentManager() внутри фрагмента внутри фрагмента
- 24. Как заставить SharedElement работать в фрагменте viewPager внутри фрагмента
- 25. Получить события касания от Viewpager внутри фрагмента
- 26. Фрагмент внутри фрагмента
- 27. Android Fragment Viewpager не работает Внутри другого фрагмента
- 28. Android ViewPager Внутри фрагмента загружен только один раз
- 29. Сбросить текущее положение позиции ViewPager внутри фрагмента
- 30. TabLayout с ViewPager не работает внутри фрагмента Android
Большое спасибо, что полезно. – Sayed
Полностью работал на меня, спасибо! – josher932
Раньше я использовал 'getFragmentManager()'. Затем изменено 'getChildFragmentManager()'. Работал как шарм! –