Fragment dynamisch hinzufügen zu existierendem Fragmentlayout

  • Antworten:2
Wicki12
  • Forum-Beiträge: 38

29.04.2013, 10:31:27 via Website

Hallo,

ich verwende erfolgreich ein per xml definiertes Fragment-Layout. Nun will ich in der Main-Activity dynamisch ein weiteres Fragment zu den 3 bereits existierenden hinzufügen. Dazu klicke ich den Menu-Button, der eine passende Methode aufruft.
Hier zunächst der Code, danach die Frage:
Layout: activity_rssfeed_hori.xml
1<?xml version="1.0" encoding="utf-8"?>
2<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="fill_parent"
4 android:layout_height="fill_parent"
5 android:id="@+id/vg"
6 >
7 <fragment
8 android:id="@+id/listFragment"
9 android:layout_width="@dimen/width"
10 android:layout_height="wrap_content"
11 class="com.example.android.rssfeed.MyListFragment" >
12 </fragment>
13 <fragment
14 android:id="@+id/listFragment2"
15 android:layout_width="@dimen/width"
16 android:layout_height="wrap_content"
17 android:layout_toRightOf="@id/listFragment"
18 class="com.example.android.rssfeed.MyListFragment2" >
19 </fragment>
20 <fragment
21 android:id="@+id/detailFragment"
22 android:layout_width="match_parent"
23 android:layout_height="wrap_content"
24 android:layout_below="@id/listFragment"
25 class="com.example.android.rssfeed.DetailFragment" >
26 </fragment>
27</RelativeLayout>
Ausschnitt aus der Activity:
1@Override
2 protected void onCreate(Bundle savedInstanceState) {
3 super.onCreate(savedInstanceState);
4 setContentView(R.layout.activity_rssfeed_hori);
5 }
6 //Methode, die zu einem Options-Menu gehört
7 @Override
8 public boolean onOptionsItemSelected(MenuItem item) {
9 FragmentManager fragmentManager = getFragmentManager();
10 FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
11 ExampleFragment fragment = new ExampleFragment();
12 fragmentTransaction.add(R.id.vg, fragment);
13 fragmentTransaction.commit();
14 return true;
15 }
Die Fragmente werden gemäss dem Layout horizontal angeordnet, soweit so gut. Das DetailFragment benutzt eine ScrollView, in der die Daten der ersten beiden Fragmente angezeigt werden können.
Nun mein Problem:
Das neue Fragment wird jedoch auf die Position des 1. bereits existierenden Fragments gesetzt, überschreibt also dieses.
Wie kann ich erreichen, dass das neue Fragment wirklich eingefügt bzw. ans Ende gesetzt wird ?

Gruss Wicki

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

29.04.2013, 12:23:23 via Website

Ich sehe nicht das du dafür einen Platzhalter definierst, dann kannst du die Position sicher genauer bestimmen.

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Wicki12
  • Forum-Beiträge: 38

29.04.2013, 13:36:05 via Website

Dank für Deine Antwort.
Ich sehe nicht das du dafür einen Platzhalter definierst
Deine Bemerkung und meine mehrfachen Versuche lassen den Schluss zu, dass man ein Fragment dynamisch in ein vorhandenes xml-Layout nur auf einen dort vorhandenen Platzhalter setzen kann. Ich hatte erwartet, dass eine Methode 'add' tatsächlich etwas einfügt und nicht nur einen bereits vorhandenen Platz besetzt.
Mit einem zusätzlichen fragment-Tag als Platzhalter im Layout funktioniert es nun.

Antworten