Hey folks, wieder mal ein kleines (Verständnis-)Problem worauf ihr sicher eine schnelle Lösung wisst.
Ich starte mit meiner MainActivity folgendes layout.xml
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<!-- As the main content view, the view below consumes the entire
space available using match_parent in both dimensions. -->
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/ivStart"
android:layout_gravity="center"
android:background="#000000"
android:src="@drawable/start"
android:paddingLeft="15dp"
android:paddingRight="15dp"
/>
</FrameLayout>
<!-- android:layout_gravity="start" tells DrawerLayout to treat
this as a sliding drawer on the left side for left-to-right
languages and on the right side for right-to-left languages.
The drawer is given a fixed width in dp and extends the full height of
the container. A solid background is used for contrast
with the content view. -->
<ListView
android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:background="#111"
/>
</android.support.v4.widget.DrawerLayout>
Alles anzeigen
Also einfach nur ein leeres FrameLayout das ich zum ersetzen durch Fragmente "content_frame" genannt habe.
Wenn der User nun ein Item auf dem NavigationDrawer auswählt wird das FrameLayout ( content_frame ) durch das neue Fragment ersetzt.
NavDrawer...
[Blockierte Grafik: http://preview.slick.pics/FUAUV2V23.png]
DigIO digIO = new DigIO();
// digIO.setMainActivity();
fm = getFragmentManager();
ft = fm.beginTransaction();
ft.replace(R.id.content_frame, digIO);
ft.commit();
fm.executePendingTransactions();
Nun wird auf meiner MainActivity das neue Fragment angezeigt.
Aus rein logischen Gründen sollte es nun auch möglich sein, das der User durch drücken der "Back"Taste auf das "leere" FrameLayout zurück wechseln kann.
Diesen Ansatz wollte ich wie folgt lösen. Ich habe ein weiteres leeres Fragment erstellt das ich nun per Fragment replace() auf mein FrameLayout ( content_frame ) legen will. Da die App aber dennoch mit der Back-Taste zu beenden sein soll habe ich dieses Konstrukt ausgedacht.
Wenn irgendein Fragment angezeigt wird, dann tausche es durch das MainBlankFragment.
Wenn MainBlankFragment visible ist dann beende die App.
@Override
public void onBackPressed() {
super.onBackPressed();
MainBlankFragment myFragment = (MainBlankFragment) getFragmentManager().findFragmentByTag("blankFragment");
if (myFragment != null) {
if (myFragment.isVisible())
finish();
}
else {
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.content_frame, new MainBlankFragment(), "blankFragment);
ft.commit();
}
}
Alles anzeigen
Nur funktioniert das ganze nicht wie gedacht das meine MainActivity trotzdem beendet wird.
Vielleicht weiss ja jemand Rat, möglich das ich auch einen komplett falschen Ansatz gewählt habe.
LG proto