Current page im Viewpager speichern

M

Manuel1805

Ambitioniertes Mitglied
2
Hallo zusammen,

ich habe in meiner App einen Navigationsdrawer implementiert. Nach klicken eines Menüpunktes wird ein Fragment erzeugt

Code:
public void SelectItem(int possition) {

		Fragment fragment = null;
		switch (possition) {
		case 0:
			fragment = new FragmentStartSeite();
			break;
		case 1:
			fragment = new Sinn();
			break;
In diesem Fragment befindet sich ein Viewpager.

Ich versuche verzweifelt die zuletzt aufgerufene Seite im jeweiligen Viewpager zu speichern und beim Aufrufen des Menüpunktes im Navigationsdrawer dirket zur zuletzt aufgerufenen Seite zu gelangen. Leider gibt es immer wieder ein paar kleinere Verschiebungen? Außerdem werden die Seiten innerhalb des Viewpagers meines Erachtens nicht zeitgerecht refreshed (Buttons bleiben im Zustand disabled...etc)

Kann mir jemand weiterhelfen? :drool:

Der Code schaut wie folgt aus:
Code:
public class Sinn extends Fragment {

	public Sinn() {

	}

	// Array für die Punkte
	private int sinnPunkte[] = new int[8];
	// Aktuelle Seite Variable
	private int sinnSeite;

	public ViewPager viewPager;
	SinnPageAdapter adapter;

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {

		View view = inflater.inflate(R.layout.start_kapitel, container, false);

		// ViewPager initialisieren
		adapter = new SinnPageAdapter(this.getActivity());
		viewPager = (ViewPager) view.findViewById(R.id.viewPager);
		viewPager.setAdapter(adapter);
		// starte mit erstem Layout (sinnSeite)

		laden();
		viewPager.setCurrentItem(sinnSeite);
		adapter.setPunkte(this.sinnPunkte);
		return view;

	}

	@Override
	public void onResume() {
		sinnPunkte = adapter.getPunkte();
		// sinnSeite = adapter.getSeite();
		this.speichern();
		super.onResume();

	}

	public void onPause() {
		sinnPunkte = adapter.getPunkte();
		sinnSeite = adapter.getSeite();
		this.speichern();
		super.onPause();
	}

	public void speichern() {
		SharedPreferences prefs = getActivity().getPreferences(
				Context.MODE_PRIVATE);
		SharedPreferences.Editor meinEditor = prefs.edit();
		meinEditor.putInt("Sinn1", this.sinnPunkte[0]);
		meinEditor.putInt("Sinn2", this.sinnPunkte[1]);
		meinEditor.putInt("Sinn3", this.sinnPunkte[2]);
		meinEditor.putInt("Sinn4", this.sinnPunkte[3]);
		meinEditor.putInt("Sinn5", this.sinnPunkte[4]);
		meinEditor.putInt("Sinn6", this.sinnPunkte[5]);
		meinEditor.putInt("Sinn7", this.sinnPunkte[6]);
		meinEditor.putInt("Sinn8", this.sinnPunkte[7]);
		meinEditor.putInt("sinnSeite", this.sinnSeite);
		meinEditor.apply();
		//meinEditor.commit();


	}

	public void laden() {
		SharedPreferences prefs = getActivity().getPreferences(
				Context.MODE_PRIVATE);
		// SharedPreferences.Editor meinEditor = prefs.edit();
		this.sinnPunkte[0] = prefs.getInt("Sinn1", 0);
		this.sinnPunkte[1] = prefs.getInt("Sinn2", 0);
		this.sinnPunkte[2] = prefs.getInt("Sinn3", 0);
		this.sinnPunkte[3] = prefs.getInt("Sinn4", 0);
		this.sinnPunkte[4] = prefs.getInt("Sinn5", 0);
		this.sinnPunkte[5] = prefs.getInt("Sinn6", 0);
		this.sinnPunkte[6] = prefs.getInt("Sinn7", 0);
		this.sinnPunkte[7] = prefs.getInt("Sinn8", 0);
		this.sinnSeite = prefs.getInt("sinnSeite", 0);

	}

}

und...
Code:
public class SinnPageAdapter extends PagerAdapter {

	Context context;

	public SinnPageAdapter(Context context) {
		this.context = context;

	}

	public int[] getPunkte() {
		return this.punkte;
	}

	public void setPunkte(int Punkte[]) {
		this.punkte = Punkte;
	}

	// Punkte für Fragen 1 -8
	private int punkte[] = new int[8];

	public void punkteVergeben(int Aufgabe, int Punkt) {

		this.punkte[Aufgabe] = Punkt;

	}

	// Rückgabe der Seite zum Merken der aktuellen Position

	public int getSeite() {
		if (seite < 0) {
			return 0;
		} else if (seite < 46) {
			return this.seite-1;
		} else
			return 0;
	}
...

public Object instantiateItem(View collection, int position) {

		LayoutInflater inflater = (LayoutInflater) collection.getContext()
				.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

		int resId = 0;
		switch (position) {
		case 0:
			resId = R.layout.a_titel_inhalt_startseite;
			seite = 1;
			break;
		case 1:
			resId = R.layout.a_titel_inhalt;
			seite = 2;
			break;
...
}

		View view = inflater.inflate(resId, null);

		if (seite == 1) {
			titel = (TextView) view.findViewById(R.id.a_tis_titel);
			titel.setText("Grundlagen");

			titelInhalt = (TextView) view.findViewById(R.id.a_tis_inhalt);
			titelInhalttext = Html
					.fromHtml("In dieser Lektion lernst Du"
							+ " die ersten Grundbegriffe und Aufgaben der Buchführung kennen. "
							+ "Die folgenden Themen schauen wir uns nun an."
							+ "<br/>" + "<br/>1. " + "<br/>2. "
							+ "<br/>3.  " + "<br/>4. "
							+ "<br/>5. "
							+ "<br/>6. ");

			titelInhalt.setText(titelInhalttext);
			folienAnzahl = (TextView) view.findViewById(R.id.a_tis_folien_text);
			folienAnzahl.setText("36 Seiten");

			folienDauer = (TextView) view.findViewById(R.id.a_tis_zeit_text);
			folienDauer.setText("20 min.");
 

Ähnliche Themen

B
Antworten
6
Aufrufe
1.059
jogimuc
J
D
  • djsnoopy
Antworten
6
Aufrufe
629
djsnoopy
D
A
Antworten
10
Aufrufe
1.942
swa00
swa00
Zurück
Oben Unten