2 Stimmen

Android: layout.xml im Fragment ändern

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();
    }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X