2016-08-04 15 views
3

Ich arbeite mit einem Viewpager und kompiliere API 23. Ich zeige einen Kompilierfehler in meinem Code für die folgende Anweisung, aber das Projekt kompiliert.getSupportFragmentManager(). GetFragments() veraltet?

Darüber hinaus kann ich diese Methode in der Android-Dokumentation für den Support-Fragment-Manager und den Nicht-Support-Manager nicht finden. Weiß jemand, was hier vor sich geht?

+0

Der erste Kommentar zu Michaels Antwort sagt alles ... http://stackoverflow.com/questions/6102007/is-there -a-way-to-get-references-für-alle-derzeit-aktive-fragments-in-a-activi 'Wir sollten diese Methode nicht verwenden. Es ist mit @hide gekennzeichnet und sollte nicht in die Support-Bibliothek jar aufgenommen werden. Es sollte nicht als Teil der exportierten API betrachtet werden. Da es ** versteckt ** war, denke ich, dass Google schließlich entschieden hat, diese Methode zu entfernen. –

+0

Haben Sie Import android.support.v4.app.Fragment verwendet? – sonnv1368

+0

Diese Methode ist seit Version 24.1.1 der Support-Bibliothek nicht mehr veraltet. Wie genau wird der Fehler angezeigt? –

Antwort

3

Ich habe tatsächlich das einen Verweis auf alle Fragmente zu erhalten:

private List<WeakReference<Fragment>> mFragList = new ArrayList<WeakReference<Fragment>>(); 

@Override 
public void onAttachFragment (Fragment fragment) { 
    mFragList.add(new WeakReference(fragment)); 
} 

public List<Fragment> getActiveFragments() { 
    ArrayList<Fragment> ret = new ArrayList<Fragment>(); 
    for(WeakReference<Fragment> ref : mFragList) { 
     Fragment f = ref.get(); 
     if(f != null) { 
      if(f.isVisible()) { 
       ret.add(f); 
      } 
     } 
    } 
    return ret; 
} 

public Fragment findFragement(String tClass) { 

    List<Fragment> fragments = getActiveFragments(); 
    for (Fragment fragment : fragments) { 
     if (tClass.equalsIgnoreCase("Home")) { 
      if (fragment instanceof ToggleFragment) { 
       return fragment; 

      } 
     } else if (tClass.equalsIgnoreCase("Contacts")) { 
      if (fragment instanceof ContactFragment) { 
       return fragment; 
      } 
     } 
    } 
    return null; 
} 
+0

Vielen Dank kristy! Sie sind die besten ! wenn Sie können auch erklären, was getactivefragments tut, wird es genial –

+0

auch für: @Override public void onAttachFragment (Fragment Fragment) { mFragList.add (neu WeakReference (Fragment));} würde es Duplikate verursachen wenn ein Bildschirm neu erstellt wird oder ft.replace() verwendet wird –

+0

@MarissaNicholas Ich glaube nicht, dass es Duplikate erzeugen würde, wenn der Bildschirm neu erstellt wird (wie beim Drehen) .Möglicherweise auf ft.replace(). –