Hi ,
ja mit setCustomAnimations ist nur eine Animation von Fragmenten möglich.
Wie sieht dein Layout der Activity aus?
Normaler weise ist das so , im Layout der Activity hast du einen Platzhalter Container für die Fragmente und in diesen Layout Bereich werden die Fragmente eingebendet. Wie groß dieser ist, ist dir überlassen. Wenn du willst das es den gesamten Bildschirm ein nimmt dann ist im Main Layout eigentlich nur ein Container. Für den anfangs Bildschirm erstellst du dann auch ein Fragment und Klasse und machst alles was du sonst in deine Activity Kasse machst in der Fragment Klasse.
Das erste laden eines Fragment ist mit add ein austauschen wird mitreplace gemacht. Für den User sieht es so aus als ob ein erneue Aktivity geladen wurde . Eigentlich wurde nur ein Fragment geladen die Activity läuft weiter. Ein Fragment läuft immer in einer Activity aleine kann ein Fragment nicht laufen. Der gesamte Code für das Fragment muss nun in der Fragment Klasse gemacht werden.
hier mein Layout der main Activity
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<!-- Activity Layout-->
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/activitylayout"
>
<!-- Tollbar im Activity Layout -->
<android.support.v7.widget.Toolbar
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/toolbar1"
android:background="@color/primary"
android:fitsSystemWindows="true"
/>
<!-- Fragment Container -->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/fragContainer"
android:layout_below="@+id/toolbar1"
/>
</RelativeLayout>
</RelativeLayout>
Alles anzeigen
Aufruf des ersten Fragment in der Main Activity
Fragment fragStartseite = (FragStartseite) Fragment.instantiate(this, FragStartseite.class.getName(), null);
getFragmentManager().beginTransaction().add((int) R.id.fragContainer, this.fragStartseite).commit();
Klasse FragStartseite
public class FragStartseite extends Fragment implements OnClickListener
{
public Activity myActivity;
//---------------------------------------------------------------------------
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
// ------------------------------------------------------------------
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.start, null); // Layout des Fragment
}
// --------------------------------------------------------------------
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
// ist fast das Gleiche wie onCreate
myActivity = getActivity();
((Button) myActivity.findViewById(R.id.button)).setOnClickListener(this);
}
//----------------------------------------------------------------------------------
// onClick Händler
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button:
// dein Code Zb. austausch des Fragments
case R.id.button:
// dein Code Zb. austausch des Fragments
Fragment frag2 = Fragment.instantiate(myActivity, Frag2.class.getName(), null);
FragmentTransaction fragtrans = getActivity().getFragmentManager().beginTransaction();
fragtrans.replace(R.id.fragContainer, frag2, null);
fragtrans.commit();
// Backstak bereinigung musst du noch machen und auch animation
break;
case R.id.?????:
// .....
break;
}
}
}
Alles anzeigen
Bemerken Möchte ich noch das du bei Fragmenten nicht das XML Atriput onKlick mehr benutzen kannst.
Und in der Fragment Klasse den Contex auf die Activity brauchst.