Ist es möglich, ein Fragment in einem Viewpager mehrere Male zu verwenden? Ich versuche eine dynamisch aktualisierte Benutzeroberfläche mit ViewPager zu erstellen. Ich möchte das gleiche Design verwenden, im Grunde das gleiche Fragment mit verschiedenen Daten für jede Seite, wie ein Listview-Adapter.Verwenden Sie ein Fragment in einem ViewPager mehrere Male
Antwort
Sie können dieselbe Fragmentklasse für jede Seite in Ihrem ViewPager instanziieren, indem Sie die Position des ViewPagers übergeben, um zu steuern, was angezeigt werden soll. So etwas Ähnliches:
public class MyFragment extends Fragment {
private int mIndex;
public MyFragment(int index) {
mIndex = index;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
switch(mIndex){
case 0:
// do you things..
case 1:
// etcetera
}
}
}
dann, in Sie FragmentPagerAdapter:
public static class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return NUM_ITEMS;
}
@Override
public Fragment getItem(int position) {
return new MyFragment(position);
}
}
diese Weise können Sie die meisten Ihrer Code wiederverwenden können Ändern nur das, was Sie in dem Switch/Case-Anweisung müssen.
aber Sie können nicht einen nicht leeren Konstruktor der Fragmentklasse –
Sie missverstanden das Konzept class
gegenüber object of class
. Ihr MyFragment.java
Quellcode definiert class
, die Sie verwandeln sich in „Lebewesen“ jedes Mal, wenn Sie es mit new
Operator instanziiert (new MyFragment();
) - diese object
schafft, die ein instance
Ihrer class
ist. Sofern Sie dies nicht absichtlich verhindern (indem Sie z. B. ein Singleton-Muster verwenden), können Sie so viele instances
von class
wie Sie möchten, genauso wie Sie so viele Kuchen machen dürfen, die ein einzelnes Rezept verwenden. Und das gilt auch für Fragmente.
So lange, wie Sie erstellen separateobject
(sagten instance
aka) Ihre class
für jede Seite, sollten Sie in der Lage sein zu tun, was Sie wollen.
erstellen können Sie einige Beispiele für die obige Erklärung ..? – Harsha
- 1. Verwenden Sie Ansicht oder Fragment in ViewPager
- 2. Fragment über ein anderes Fragment in ViewPager
- 3. Wie ein ViewPager mit einem Fragment ersetzen
- 4. Verwenden Sie einzelne Aktivität mehrere Male
- 5. Wie setzen ViewPager in einem Fragment
- 6. ViewPager in einem Fragment in einer Aktivität
- 7. Ersetze ein Fragment in einem ViewPager mit FragmentPagerAdapter
- 8. Verwenden von RecyclerView adapter.notifyDataSetChanged in ViewPager Fragment
- 9. Viewpager in Fragment hinzufügen
- 10. Android erfrischen einen ViewPager in einem Fragment
- 11. Android: Viewpager in einem Fragment der Navigationsschublade
- 12. So ersetzen Sie ein Fragment zu einem anderen Fragment in TabLayout und ViewPager
- 13. Android - Speichern von Viewpager in einem Fragment
- 14. Bestimmen Sie, welches Fragment derzeit in ViewPager
- 15. CollapsingToolbarLayout + Coordinatorlayout + ViewPager + Fragment
- 16. So aktualisieren oder aktualisieren Sie ein Fragment im ViewPager
- 17. Android Viewpager Fragment lifecyle
- 18. Fragment in ViewPager nicht aktualisiert
- 19. ViewPager innerhalb Fragment Ausgabe
- 20. Verwenden Sie Backstack mit ViewPager
- 21. Einlesen in ein Array mehrere Male
- 22. Android - smoothScrollToPosition in einem Kind Fragment in einem ViewPager
- 23. Wie ViewPager + Fragment + Listview
- 24. Android-Fragment, Viewpager, Aktivitätsrelation
- 25. TabLayout - ViewPager - Fragment
- 26. TabLayout überlappt ViewPager Fragment
- 27. Mehrere RecyclerView in einem Fragment
- 28. Android Open Fragment über ViewPager
- 29. ViewPager + Fragments - Fragment nicht gezeigt
- 30. Probleme, wenn ich tablayout und viewpager innerhalb Fragment verwenden
AFAIK, das wird nicht funktionieren. Sie können einen 'GestureDetector' verwenden, um nach Swipes in Ihrem vorhandenen Fragment zu suchen. – CommonsWare
BTW, um zu verdeutlichen, nehme ich an, dass Sie meinen, dass Sie ein einzelnes Fragment * instance * verwenden möchten - wenn Sie meinen, dass Sie nur ein einzelnes Fragment * class * verwenden möchten, ist das völlig in Ordnung. – CommonsWare