muszę viewPager wewnątrz fragmentu, ale mam dwa fragmenty, fragment 1 jest moim MENU, a fragment dwa chcę użyć ViewPagerIndicator ...Jak ustawić ViewPager wewnątrz Fragment
ale fragment nie może mieć innego fragmentu ... co muszę dla tego zrobić?
muszę viewPager wewnątrz fragmentu, ale mam dwa fragmenty, fragment 1 jest moim MENU, a fragment dwa chcę użyć ViewPagerIndicator ...Jak ustawić ViewPager wewnątrz Fragment
ale fragment nie może mieć innego fragmentu ... co muszę dla tego zrobić?
Począwszy od wersji Android 4.2, są zagnieżdżone fragmenty. http://developer.android.com/about/versions/android-4.2.html#NestedFragments Biblioteka obsługi zawiera teraz także obsługę tego dla starszych wersji Androida.
Więc można zrobić coś takiego:
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ViewPager mViewPager = (ViewPager) view.findViewById(R.id.viewPager);
mViewPager.setAdapter(new MyAdapter(getChildFragmentManager()));
}
Pełne wdrożenie dostępny tutaj: https://github.com/marcoRS/nested-fragments/tree/master/src/com/burnside/digital/nestedfragments
Z biblioteki Android Pomoc V4, można dodać fragment wewnątrz innego fragmentu. Spróbuj go użyć, może to rozwiązać Twój problem.
Ale nie jest możliwe, ponieważ nie mogę umieścić FragmentActivity wewnątrz mojego fragment 2, ponieważ fragment rodzic jest FragmentActivity i dziecko (fragment 2) musi być fragmentaryczność, aby mieć zakładki .. jakiś pomysł? –
Och, ale czekaj, możesz po prostu umieścić 2 fragmenty w fragmencie bez fragmentAktywności, wiesz? A może masz powody, by to zrobić ... –
Po przeczytaniu niektórych przykładach, nie można mieć FragmentActivity wewnątrz fragmentActivity. Nie jest konieczne posiadanie dwóch fragmentów i musi to być FragmentPageAdapter ... muszę to tylko zrobić.
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="1" >
</android.support.v4.view.ViewPager>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0"
android:gravity="center"
android:measureWithLargestChild="true"
android:orientation="horizontal" >
<Button
android:id="@+id/first"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="First" >
</Button>
<Button
android:id="@+id/last"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Last" >
</Button>
</LinearLayout>
Źródło: http://www.truiton.com/2013/05/android-fragmentpageradapter-example/
Musisz użyć getChildFragmentManager()
zamiast getSupportFragmentManager()
uzyskać FragmentManger
wewnątrz fragmentu. Ale nie powinieneś używać FragmentStatePagerAdapter
zamiast FragmentPagerAdapter
.
Dzięki, pracuj dla mnie! –
jest to możliwe. spróbuj zrobić ten kod pliku view_pager_fragment.xml
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.design.widget.TabLayout
android:id="@+id/tab"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
ViewPagerFragment
ViewPager viewPager;
TabLayout tabLayout;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.tracks, container, false);
viewPager = (ViewPager) view.findViewById(R.id.viewpager);
tabLayout = (TabLayout) view.findViewById(R.id.tab);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setupViewPager(viewPager);
tabLayout.setupWithViewPager(viewPager);
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(getChildFragmentManager());``
viewPagerAdapter.addFragment(new FirstFragment(), "First");
viewPagerAdapter.addFragment(new SecoundFragment(), "Secound");
viewPagerAdapter.addFragment(new LoginFragment(), "Login");
viewPager.setAdapter(viewPagerAdapter);
}
private class ViewPagerAdapter extends FragmentPagerAdapter {
List<Fragment> fragmentList = new ArrayList<>();
List<String> fragmentTitles = new ArrayList<>();
public ViewPagerAdapter(FragmentManager fragmentManager) {
super(fragmentManager);
}
@Override
public Fragment getItem(int position) {
return fragmentList.get(position);
}
@Override
public int getCount() {
return fragmentList.size();
}
@Override
public CharSequence getPageTitle(int position) {
return fragmentTitles.get(position);
}
public void addFragment(Fragment fragment, String name) {
fragmentList.add(fragment);
fragmentTitles.add(name);
}
}
Ale nie jest to możliwe, ponieważ nie mogę umieścić FragmentActivity wewnątrz mojego Fragmentu 2, ponieważ fragmentem macierzystym jest FragmentActivity, a dziecko (fragment 2) musi być fragmentactivity do mają tabulatory ... aw przykładzie Githuba nie umieszczaj fragmentu wewnątrz innego fragmentu. –
Dlaczego potrzebujesz fragmentu 1? Nie możesz po prostu mieć podglądu, który odwołuje się do różnych fragmentów, a następnie ma Fragment 2 poniżej? –
ale fragment 1 jest zawsze taki sam i wyglądałoby to jak zmiany, i nie chcesz tego .. jakiś pomysł? –