Wicki12
- Forum-Beiträge: 38
29.04.2013, 10:31:27 via Website
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
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
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: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>
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.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 }
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
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.