M
Manuel1805
Ambitioniertes Mitglied
- 2
Hallo zusammen,
ich habe in meiner App einen Navigationsdrawer implementiert. Nach klicken eines Menüpunktes wird ein Fragment erzeugt
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?
Der Code schaut wie folgt aus:
und...
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;
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?
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.");