Ich habe zwei Fragmente nebeneinander. Wenn ich eine Aktion auf dem linken Fragment ausführe, soll sich das rechte Fragment ändern. Das funktioniert, solange die layout.xml des rechten Fragments nicht geändert wird. Was ich möchte, ist eine Reihe von Layouts zu definieren, z.B. layout1.xml, layout2.xml, und je nachdem, was auf der linken Seite passiert, soll auf der rechten Seite eines dieser Layouts angezeigt werden. Ich fand http://developer.Android.com/guide/components/fragments.html#Transactions aber ich bin mir nicht sicher, ob das der richtige Ansatz ist. Wenn nicht, was wäre dann der richtige Weg? Wenn ja, kämpfe ich ein wenig mit
transaction.replace(R.id.fragment_container, newFragment);
Ich muss dem newFragment mitteilen, dass es jetzt z. B. layout27.xml hat. Wie kann ich das tun?
Edita:
Meine main.xml sieht wie folgt aus
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<fragment class="com.whatever.OverviewFragment"
android:id="@+id/list"
android:name="com.whatever.OverviewFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1" />
<fragment class="com.whatever.DetailFragment"
android:id="@+id/listB"
android:name="com.whatever.DetailFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1" />
</LinearLayout>
Das zweite Fragment sollte bei Benutzeraktionen ausgetauscht werden, für ListeB habe ich, sagen wir, 5 verschiedene layout.xml-Dateien.
DetailFragment.java sieht im Wesentlichen wie folgt aus:
public class DetailFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.details, container, false);
}
//this is called when I do an action in the other fragment
public void setScreen(int id) {
//This fragment is one of the 5 possible fragments
DetailFragment2 newF = new DetailFragment2();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.listB, newF);
transaction.addToBackStack(null);
transaction.commit();
}
}