GetParentFragment API 16

Wir alle wissen, dass getParentFragment von Fragment in API 17 eingeführt wird.

Also, was ist, wenn wir Eltern-Fragment in API 16 und unten bekommen wollen (in Anbetracht dessen, dass ich natives Fragment mit Unterstützung FragmentStatePagerAdapter und kein Problem mit verschachtelten Fragmenten habe)

  • Firebase handleIntent AbstractMethodError
  • Warum gehst du mit -libraryjars an, wenn ich es noch nie gebraucht habe?
  • SQLite-Datenbank-Update-Abfrage mit mehreren wo Bedingungen in Android
  • SimpleCursorAdapter mit Abschnitten in Android
  • Android 4.0 / ICS - App Icon auf Action Bar nicht anklickbar
  • Verwalten Sie Android-Gerät über Web-Browser von einem Laptop mit WiFI
  • Gibt es einen besseren Weg als meine?

    Im Elternteil:

     public class ParentFragment extends Fragment { public static ParentFragment StaticThis; ... @Override public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) { super.onCreate(savedInstanceState); StaticThis = this; ... } 

    Im kind:

     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) parentFragment = (ParentFragment) getParentFragment(); else parentFragment = ParentFragment.StaticThis; 

  • Wie kann ich .gif-Datei in imageview anzeigen?
  • DrawerLayout modifizieren Empfindlichkeit?
  • PlayServices-Anzeigenbibliothek 7.5.0 benötigt WRITE_EXTERNAL_STORAGE Berechtigung
  • Android: Wie sieht GridView auto_fit die Anzahl der Spalten?
  • Override Android Back Button
  • Gibt es irgendwelche Benchmarks auf J2MEPolish, die eine J2ME App auf Android umwandeln?
  • 3 Solutions collect form web for “GetParentFragment API 16”

    Basierend auf deinem Kommentar, wenn du von den "Items" in deinem ViewPager sprechen ViewPager (ich ViewPager das ist ein Fragment ) zum Container des ViewPager der eine FragmentActivity kannst du eine Schnittstelle verwenden.

    (1) Entweder deklariere die Schnittstelle im Fragment selbst oder als separate Datei (2) "Initialize" die Inteface in dein Fragment's onAttach Methode. Beispielsweise

      private SomeInterface blah; @Override public void onAttach(Activity activity){ blah = (SomeInterface) activity; } 

    (3) Implementiere die Schnittstelle in deiner FragmentActivity .

    Du kannst dann von deinem Fragment . Von dort aus können Sie irgendeine Methode anrufen, die Sie innerhalb der FragmentActivity wünschen oder wenn Sie einen Verweis auf irgendwelche der anderen Fragmente erhalten, die in Ihren ViewPager geladen werden, rufen Sie jede öffentliche Methode innerhalb dieses Fragment . So können Sie zwischen Fragmenten und ihrem Container ohne Speicherverlust kommunizieren.

    Um das Elternteil in älteren (und neueren) Versionen zu bekommen, habe ich einen Weg gefunden:

    1) Setzen Sie den Tag des ParentFragments in Ihre Aktivität (über .add () oder .replace ()). Überprüfen Sie den Link unten für weitere Informationen oder Schritt 2 für ein ähnliches Beispiel in der ParentFragment: http://developer.android.com/reference/android/app/FragmentTransaction.html#add(android.app.Fragment , java.lang .String)

    2) Im ParentFragment sammle das Tag (mit 'this') und füge es dem newInstance () deines ChildFragment hinzu:

      FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); // Get the fragment, if you want to re-use it ChildFragment fragment = (ChildFragment) fragmentManager.findFragmentByTag(); // Create a new fragment if it doesn't already exist. if (fragment == null) { // Collect the tag of your ParentFragment and add it to the newInstance() of the ChildFragment String parentTag = this.getTag(); fragment = ChildFragment.newInstance(parentTag); } // Put the fragment in the .replace() or .add() of the transaction. // You might use a childTag as well, but it's not necessary for solving your problem fragmentTransaction.replace(R.id.my_fragment_view, fragment, childTag); fragmentTransaction.commit(); 

    3) Achten Sie darauf, das Tag in den Argumenten des ChildFragment zu speichern. Sammle das Tag aus den Argumenten in onAttach () und sammle das ParentFragment über den Parameter 'activity' aus onAttach ():

     private static final String PARENT_TAG = "parent_tag"; ParentFragment parentFragment; public static ChildFragment newInstance(String parentTag) { ChildFragment fragment = new ChildFragment(); Bundle args = new Bundle(); args.putString(PARENT_TAG, parentTag); fragment.setArguments(args); return fragment; } @Override public void onAttach(Activity activity) { super.onAttach(activity); // Collect the tag from the arguments String tag = getArguments().getString(PARENT_TAG); // Use the tag to get the parentFragment from the activity, which is (conveniently) available in onAttach() parentFragment = (ParentFragment) activity.getFragmentManager().findFragmentByTag(tag); } 

    4) Jetzt hast du dein ParentFragment in deinem ChildFragment und du kannst es benutzen, wann immer du es brauchst, also wo du das benutzt hast:

     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { parentFragment = (ParentFragment) getParentFragment(); } else { parentFragment = ParentFragment.StaticThis; } 

    du kannst jetzt:

     parentFragment.justDoSomethingCoolWithIt(); // and prevent memory leaks through StaticThis ;-) 

    EINFACHE BENUTZUNG UNTERSTÜTZUNG BIBLIOTHEK MIT FRAGMENT AKTIVITÄT. http://developer.android.com/reference/android/support/v4/app/Fragment.html#getParentFragment%28%29

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.