Ich habe ein (vor geschriebenes) Fragment, das unter R.layout.myFragment
aufgerufen wird. Da ich ein Fragment (auch im vordefinierten Code) an einen FragmentPagerAdapter in einem ViewPager übergeben muss, habe ich versucht, es als zu übergeben, aber es gab null zurück, wahrscheinlich, da es etwas in der Form R.id.something
erwartet.
Ich fand hier einige Antworten auf SO - bezogen auf die Implementierung von Google Maps - Fragmenten - aber diese (glaube ich) gelten nicht für mein Problem, da ich ein Fragment in Form von R.layout.myFragment
verwenden muss und keine Parent/Container - Fragmente (oder etwas ähnliches, soweit ich weiß), um eine FragmentTransaction zu verwenden.
Es wird erwartet, dass das Fragment in der Überlagerung getItem() des FragmentPagerAdapter von ViewPager zurückgegeben wird. Wie kann ich dieses Fragment erhalten, um es zurückzugeben?Wie kann ich dieses Fragment zurückgeben?
2
A
Antwort
0
Es gibt zwei mögliche Lösungen. Beides beinhaltet das Durchlaufen aller Fragmente, um das zu finden, was Sie brauchen.
Wie erklärt here von didi_X8, können Sie die onAttachFragment Methode der Aktivitätsklasse verwenden, um eine Liste aller angebrachten Fragmente zu erstellen und später durchlaufen sie:
List<WeakReference<Fragment>> fragList = new ArrayList<WeakReference<Fragment>>();
@Override
public void onAttachFragment (Fragment fragment) {
fragList.add(new WeakReference(fragment));
}
public List<Fragment> getActiveFragments() {
ArrayList<Fragment> ret = new ArrayList<Fragment>();
for(WeakReference<Fragment> ref : fragList) {
Fragment f = ref.get();
if(f != null) {
if(f.isVisible()) {
ret.add(f);
}
}
}
return ret;
}
Eine andere Lösung as explained by Michael wäre das verwenden Support-Bibliothek und nutzen Sie die getFragments-Methode:
public List<Fragment> getVisibleFragments() {
List<Fragment> allFragments = getSupportFragmentManager().getFragments();
if (allFragments == null || allFragments.isEmpty()) {
return Collections.emptyList();
}
List<Fragment> visibleFragments = new ArrayList<Fragment>();
for (Fragment fragment : allFragments) {
if (fragment.isVisible()) {
visibleFragments.add(fragment);
}
}
return visibleFragments;
}
Verwandte Themen
- 1. Wie ändere ich dieses Fragment
- 2. Wie programmiere ich dieses Fragment programmatisch zu meinem Fragment?
- 3. Wie löse ich dieses CGPath, wenn ich es zurückgeben müssen
- 4. Wie kann ich Systeminformationen in Python zurückgeben?
- 5. Wie kann ich dieses Stück dieses Arrays in gdb untersuchen?
- 6. Wie kann ich mithilfe des MeteorJS-Stapels Eigenschaften eines Objekts mithilfe der ID dieses Objekts zurückgeben?
- 7. Wie kann ich ein Array zurückgeben?
- 8. Wie kann ich einen String Vector zurückgeben?
- 9. Wie kann ich eine Rückruffunktion zurückgeben?
- 10. Wie kann ich die HTTP-Antwort zurückgeben?
- 11. Wie kann ich ENOENT importieren, damit ich es zurückgeben kann?
- 12. Wie kann ich dieses Span-Element auswählen?
- 13. Wie kann ich dieses Datum formatieren?
- 14. Wie kann ich dieses RelativeLayout reparieren?
- 15. Wie kann ich dieses Nil Case
- 16. Wie kann ich dieses Menü optimieren?
- 17. Wie kann ich dieses .NET-Ereignis abbestellen?
- 18. Wie kann ich dieses Ajax-Skript implementieren?
- 19. Wie kann ich dieses Ereignisprotokollproblem beheben?
- 20. Wie kann ich dieses Speicherleck beheben?
- 21. Wie kann ich dieses ADFS-Token validieren?
- 22. Wie kann ich dieses UITableView anzeigen lassen?
- 23. Wie kann ich dieses CSS Problem lösen?
- 24. Wie kann ich dieses Layout CSS erreichen
- 25. Wie kann ich dieses Problem beheben Methode
- 26. Ruby: Wie kann ich dieses Array kopieren?
- 27. Wie kann ich dieses VB Script automatisieren?
- 28. Wie kann ich dieses JavaScript vereinfachen?
- 29. Wie kann ich dieses Format reproduzieren?
- 30. Wie kann ich ein "sollte" Block/Fragment in specs2 überspringen?
Wo ist der Code, Hast du müde? – Nambi
Bitte denken Sie daran, eine Antwort zu akzeptieren, wenn es Ihnen geholfen hat – SoroushA