Android Nested Fragment Ansatz

Ich bin Neuling bei der Verwendung von Android-Fragmenten. Ich habe ein Szenario Lassen Sie mich erklären, dass ich bekam

  1. Hauptaktivität, die FragmentActivity erweitert. Meine Hauptaktivität besteht aus zwei Fragmenten
  2. Optionsliste, die Fragment erweitert
  3. Details Liste, die Fragment erweitert
  4. Details Beschreibung, die Fragment erweitert

Wenn ich meine Haupttätigkeit auflege. Es besteht aus Optionsliste in Fragment 1 & Details Liste in Fragment 2 . Dann wähle ich ein Element aus der Detailsliste. Dann muss seine Beschreibung in Fragment 2 der Hauptaktivität geladen werden

  • Android ViewGroup.setScaleX () bewirkt, dass die Ansicht abgeschnitten wird
  • MediaPlayer kann keine Audiodateien aus dem Programmdatenordner abspielen?
  • Gibt es etwas schneller als Jsoup für HTML-Scraping?
  • Streaming-Video-Liste mit Exoplayer
  • Was sind die Portabilitäts-Implikationen der Verwendung der NDK?
  • Android Studio auf "Gradle: resolve dependancies" _debugCompile '"oder" detachedConfiguration1 "
  • Sehen Sie dieses Bild

    Bildbeschreibung hier eingeben

    Ich bekomme keine Ahnung, wie ich das erreichen kann. Ich meine, wie kann ich sagen, Details List Fragment zu laden Details Beschreibung Fragment in Hauptaktivität. Auch wenn ich die rückseitige Taste drücke, muss ich in die Anfangsphase zurückkehren

    Bildbeschreibung hier eingeben

    EDIT:

    Was ich tat, war die Schaffung einer Schnittstellen (Listener) in Fragmenten und implementieren sie auf meine Eltern-Aktivität. Aber wenn es 10 verschiedene Fragmente gibt, muss ich alle Schnittstellen in meiner Elternaktivität implementieren. Also gibt es einen anderen Ansatz, um dies zu erreichen?

  • Welche Dateien sollte ich in einem Android-Projekt auf SVN ignorieren
  • Wie kann ich einen Thread in Android NDK erstellen?
  • Android-Entwickler-Seite: Verständnis von Traceview-Profiling-Beispiel
  • Implementierung von Android als Server (Empfänger) im Airplay
  • SQLiteDatabase.query-Methode
  • Mögliche nur bestimmte Zeilen Code nach Android OS Version laden?
  • 3 Solutions collect form web for “Android Nested Fragment Ansatz”

    Die Sache, die immer daran erinnern, wenn die Entwicklung von Fragmenten ist, dass es eine Benutzeroberfläche braucht, damit es angezeigt wird. Du brauchst einen Platz in deinem Layout, wo du das Fragment sein möchtest. Es gibt zwei Möglichkeiten, das zu tun:

    • Erstellen Sie eine Fragment-Klasse und deklarieren sie in Ihrem Layout wie unten.

      Hier gehen wir davon aus, dass wir ein Fragment für ArtikelListFragment und ArticleReaderFragment erstellt haben.

      <fragment android:id="@+id/list" android:name="com.example.news.ArticleListFragment" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" /> <fragment android:id="@+id/viewer" android:name="com.example.news.ArticleReaderFragment" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="2" /> 

      Der Nachteil, dies zu tun ist, dass man das nicht zur Laufzeit ändern kann, dh wenn deine Anwendung ausgeführt wird, kannst du kein Fragment mit einem anderen ersetzen. Wenn du z. B. zwei Fragmente anzeigen musst, musst du zwei in deinem Layout deklarieren und einmal ausblenden. Glücklicherweise gibt es einen anderen Weg.

    • Programmgesteuertes Hinzufügen deines Fragments zur Laufzeit. In diesem Ansatz müssen Sie zuerst ein Layout deklarieren und sicher sein, einen Container (LinearLayout, RelativeLayout, etc) hinzuzufügen, wo Sie das Fragment platzieren werden. Beispielsweise:

       <ListView android:id="@id/options_list" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" > </ListView> <LinearLayout android:id="@id/detail_layout" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="2" android:orientation="vertical" > </LinearLayout> 

    Hier definiere ich eine Liste options_list für deine Optionen und ein Layout detail_layout wo du die Details platzieren musst. Zur Laufzeit, wenn eine Option geklickt wird, erscheint das Detailfragment auf detail_layout wie:

     ExampleFragment fragment = new ExampleFragment(); getFragmentManager().beginTransaction().add(R.id.detail_layout, fragment).commit(); 

    Um dieses Fragment durch ein anderes zu ersetzen:

     Fragment newFragment = new AnotherExampleFragment(); getFragmentManager().beginTransaction().replace(R.id.detail_layout, newFragment).addToBackStack(null).commit(); 

    Beachten Sie den Aufruf von addToBackStack. Dies wird benötigt, so dass, wenn der Benutzer zurück drückt, der vorherige angezeigt wird.

    Ich glaube, du kannst es hier herausfinden. 🙂

    In deiner Fragment-Aktivität kannst du 2 Containerviews (zB 2 Linearlayouts) – für deine linke Navigation (Optionsliste) und deinen richtigen Inhalt verwenden. Dann brauchst du eine öffentliche Funktion wie public void switchFragmentInContainer(Fragment f, int position) in dem du ein neues Fragment in deinen Container public void switchFragmentInContainer(Fragment f, int position)

    In deiner OptionList rufst du diese Funktion wie ((FragmentActivity) getActivity).switchFragmentInContainer(NEWFRAGMENT, FragmentActivity.RIGHT); .

    Ich hoffe das ist es, was du gesucht hast.

    Nach http://developer.android.com/guide/components/fragments.html#Adding

     // Create new fragment and transaction Fragment newFragment = new ExampleFragment(); FragmentTransaction transaction = getFragmentManager().beginTransaction(); // Replace whatever is in the fragment_container view with this fragment, // and add the transaction to the back stack transaction.replace(R.id.fragment_container, newFragment); transaction.addToBackStack(null); // Commit the transaction transaction.commit(); 

    Sie können auch:

     public class MainActivity extends FragmentActivity { ... public void onArticleSelected(Uri articleuri) { //use data to add the new fragment } ... } public static class FragmentA extends ListFragment { OnArticleSelectedListener mListener; // Container Activity must implement this interface public interface OnArticleSelectedListener { public void onArticleSelected(Uri articleUri); } ... @Override public void onAttach(Activity activity) { super.onAttach(activity); try { mListener = (OnArticleSelectedListener) activity; } catch (ClassCastException e) { throw new ClassCastException(activity.toString() + " must implement OnArticleSelectedListener"); } } ... @Override public void onListItemClick(ListView l, View v, int position, long id) { // Append the clicked item's row ID with the content provider Uri Uri noteUri = ContentUris.withAppendedId(ArticleColumns.CONTENT_URI, id); // Send the event and Uri to the host activity mListener.onArticleSelected(noteUri); } ... } 
    Das Android ist ein Google Android Fan-Website, Alles über Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.