Hinzufügen von mehreren Fragmenten programmgesteuert

Ich benutze Fragment-Transaktion, um zwei Fragmente einer Aktivität hinzuzufügen. Aber es passiert, dass nur das erste Fragment angezeigt wird, wenn die App gestartet wird. Hier ist der Code:

Hauptaktivität

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); FragOne firstButton = new FragOne(); FragmentTwo secButton = new FragmentTwo(); FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.add(R.id.frag_container, firstButton); transaction.add(R.id.frag_container, secButton); transaction.commit(); } 

Activity_main.xml

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:id="@+id/frag_container" android:layout_height="fill_parent" android:orientation="horizontal"> </LinearLayout> 

Frag_one.xml und frag_two.xml sind ähnlich

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button One" /> </LinearLayout> 

Also bin ich mir nicht sicher, was das Problem sein könnte … Ich habe viele Beispiele mit dem Hinzufügen eines Fragments gesehen.

  • Wie benutzt man verschiedene Hintergrundbilder für verschiedene Auflösungen in Android?
  • Sind Vektorbilder für Android nützlich?
  • In Android, wie man Navigationsschublade Header Bild und Namen programmgesteuert in der Klassendatei setzen?
  • So entfernen Sie das Layout und den Rand des Standardlayouts
  • Wie fügt man Element Transparenz in RecyclerView, wenn es aus der Liste Grenze ist?
  • Füge Rand oben oben hinzu ListView item (und unten) in Android
  • Wie würdest du eine Popover-Ansicht in Android erstellen, wie Facebook Kommentare?
  • Android ADT 21.0.0. Speicher leckt im grafischen Layout
  • 5 Solutions collect form web for “Hinzufügen von mehreren Fragmenten programmgesteuert”

    Ich bin mir nicht sicher, aber es ist möglich, dass beide das Fragment tatsächlich hinzugefügt werden, aber weil sie genau das gleiche sind und sich in einem LinearLayout befinden – man versteckt das andere.

    Wenn ich Sie wäre, würde ich das Layout in der Hauptaktivität ändern, um ein relatives Layout zu sein und füge das Fragment zu zwei verschiedenen Platzhalter hinzu , um zu überprüfen, ob dies das Problem ist.

    Ich habe eigentlich nicht das Programm gelaufen, also könnte es etwas ganz anderes sein … viel Glück!

    Da die Höhenparams der beiden Fragment-XML-Dateien "match_parent" sind,

     <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" *android:layout_height="match_parent" WRONG!!! need to be "wrap_content"* android:orientation="vertical" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button One" /> </LinearLayout> 

    Also dein erstes Fragment auf die ganze Höhe seines Elternteils aufblasen und wenn die anderen Fragmente hinzugefügt haben, haben sie keinen Platz.

    Daher null auf den Container param in onCreateView-Methode ist nicht der richtige Weg, um das Problem zu lösen.

    Du musst nur android setzen: layout_height = "wrap_content"

    Ich weiß, es ist zu spät, um zu antworten, aber ich habe das Problem herausgefunden. Deine frag_one.xml und frag_two.xml sehen aus wie:

     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button One" /> </LinearLayout> 

    Beachten Sie, dass LinearLayout das Layout_height auf match_parent . Würde es nicht den ganzen Bildschirm besetzen?

    Machen Sie es wrap_content und es würde funktionieren. Gerade gelöst mein Fall, das mit deinem identisch war.

    Mein Problem wurde gelöst, indem Sie sicherstellen, dass die LinearLayout hatte die Orientierung auf vertikale statt der Standard-horizontale gesetzt.

    Ja, Sie haben Recht, die Fragmente sind beide hinzugefügt, aber das Problem ist, dass die Fragment-Layouts übereinander hinzugefügt werden … Das Problem war im Fragment-Code

     View view = inflater.inflate(R.layout.frag_one, container, false); 

    gewechselt zu

     View view = inflater.inflate(R.layout.frag_one, null); 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.