M
Manuel1805
Ambitioniertes Mitglied
- 2
Hallo zusammen,
ich versuche in einem ViewPager die Itemposition der aktuell aufgerufenen Seite zu speichern um beim erneuten Start dieses ViewPagers an dieser Seite zu beginnen statt am Anfang.
Meine Realisierung funktioniert leider nur Suboptimal
...d.h. es funktioniert nur wenn ich eine Seit zurück swipe/blätter
Ansonsten wird mir immer die akutelle Seite +2 angezeigt. Mir ist unverständlich wieso dieses Verhalten auftritt. Vielleicht kann mir jemand weiterhelfen.
Anbei der Code:
und...
ich versuche in einem ViewPager die Itemposition der aktuell aufgerufenen Seite zu speichern um beim erneuten Start dieses ViewPagers an dieser Seite zu beginnen statt am Anfang.
Meine Realisierung funktioniert leider nur Suboptimal
...d.h. es funktioniert nur wenn ich eine Seit zurück swipe/blätter
Ansonsten wird mir immer die akutelle Seite +2 angezeigt. Mir ist unverständlich wieso dieses Verhalten auftritt. Vielleicht kann mir jemand weiterhelfen.
Anbei der Code:
Code:
package de.manuel.buchenfueranfaenger;
public class SinnPageAdapter extends PagerAdapter {
Context context;
public SinnPageAdapter(Context context) {
this.context = context;
}
// Rückgabe der Seite zum Merken der aktuellen Position
public int getSeite() {
if (seite < 1) {
return 0;
} else if (seite < 46 && seite >0) {
return this.seite;
} else
return 0;
}
TextView folienAnzahl;
TextView folienDauer;
TextView titel;
TextView titelInhalt;
TextView inhalt;
TextView seite_von_bis;
ImageView bild;
ImageView imagePfeilrechts;
CharSequence titelInhalttext; // für XML Titel_Inhalt
CharSequence inhaltText; // für XML Inhalt
private int seite;
private int maxSeitenzahl = 36;
TextView frage;
// ---Die Anzahl aller Seiten zurückgeben---
public int getCount() {
return 46;
}
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;
seitenToast();
break;
case 1:
resId = R.layout.a_titel_inhalt;
seite = 2;
seitenToast();
break;
case 2:
resId = R.layout.a_inhalt;
seite = 3;
seitenToast();
break;
case 3:
resId = R.layout.a_inhalt;
seite = 4;
seitenToast();
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. ");
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.");
} else if (seite == 2) {
titel = (TextView) view.findViewById(R.id.a_ti_titel);
titel.setText("1. Überblick");
titelInhalt = (TextView) view.findViewById(R.id.a_ti_inhalt);
titelInhalttext = Html
.fromHtml("Die Buchführung verschafft dem Unternehmer, ");
titelInhalt.setText(titelInhalttext);
seite_von_bis = (TextView) view
.findViewById(R.id.a_ti_seite_von_bis);
seite_von_bis.setText("1 / " + maxSeitenzahl);
} else if (seite == 3) {
inhalt = (TextView) view.findViewById(R.id.a_i_inhalt);
inhaltText = Html
.fromHtml("Mit Hilfe der Buchführung wird der Gewinn oder Verlust ");
inhalt.setText(inhaltText);
seite_von_bis = (TextView) view
.findViewById(R.id.a_i_inhalt_seite_von_bis);
seite_von_bis.setText("2 / " + maxSeitenzahl);
} else if (seite == 4) {
inhalt = (TextView) view.findViewById(R.id.a_i_inhalt);
inhaltText = Html
.fromHtml(" Für uns ist das 3. Buch relevant. Dieses beschäftigt sich mit ");
inhalt.setText(inhaltText);
seite_von_bis = (TextView) view
.findViewById(R.id.a_i_inhalt_seite_von_bis);
seite_von_bis.setText("3 / " + maxSeitenzahl);
}
((ViewPager) collection).addView(view, 0);
return view;
}
@Override
public void destroyItem(View arg0, int arg1, Object arg2) {
((ViewPager) arg0).removeView((View) arg2);
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == ((View) arg1);
}
@Override
public Parcelable saveState() {
return null;
}
public void richtigToast() {
}
public void falschToast() {
}
//TESTANZEIGE
public void seitenToast() {
final Toast ImageToast = new Toast(context);
LinearLayout toastLayout = new LinearLayout(context);
toastLayout.setOrientation(LinearLayout.HORIZONTAL);
TextView text = new TextView(context);
text.setText(String.valueOf(seite));
toastLayout.addView(text);
ImageToast.setView(toastLayout);
ImageToast.setDuration(Toast.LENGTH_SHORT);
ImageToast.show();
// Toastlänge verkürzen
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
ImageToast.cancel();
}
}, 200);
}
}
und...
Code:
package de.manuel.buchenfueranfaenger;
public class Sinn extends Fragment {
public Sinn() {
}
// 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);
laden();
anzeige();
viewPager.setCurrentItem(sinnSeite);
return view;
}
@Override
public void onResume() {
// sinnSeite = adapter.getSeite();
// this.speichern();
super.onResume();
}
public void onPause() {
sinnSeite = adapter.getSeite();
this.speichern();
super.onPause();
}
public void speichern() {
SharedPreferences prefs = getActivity().getPreferences(
Context.MODE_PRIVATE);
SharedPreferences.Editor meinEditor = prefs.edit();
meinEditor.putInt("sinnSeite", adapter.getSeite());
meinEditor.apply();
// meinEditor.commit();
// Test: Ausgabe der gespcherten Seite
final Toast ImageToast = new Toast(this.getActivity());
LinearLayout toastLayout = new LinearLayout(this.getActivity());
toastLayout.setOrientation(LinearLayout.HORIZONTAL);
ImageView image = new ImageView(this.getActivity());
TextView text = new TextView(this.getActivity());
image.setImageResource(R.drawable.ic_falsch);
text.setText(String.valueOf(sinnSeite));
toastLayout.addView(image);
toastLayout.addView(text);
ImageToast.setView(toastLayout);
ImageToast.setDuration(Toast.LENGTH_SHORT);
ImageToast.show();
}
public void laden() {
SharedPreferences prefs = getActivity().getPreferences(
Context.MODE_PRIVATE);
// SharedPreferences.Editor meinEditor = prefs.edit();
this.sinnSeite = prefs.getInt("sinnSeite", 0);
}
// Test der geladenen Seite
public void anzeige() {
final Toast ImageToast = new Toast(this.getActivity());
LinearLayout toastLayout = new LinearLayout(this.getActivity());
toastLayout.setOrientation(LinearLayout.HORIZONTAL);
ImageView image = new ImageView(this.getActivity());
TextView text = new TextView(this.getActivity());
image.setImageResource(R.drawable.ic_richtig);
text.setText(String.valueOf(sinnSeite));
toastLayout.addView(image);
toastLayout.addView(text);
ImageToast.setView(toastLayout);
ImageToast.setDuration(Toast.LENGTH_SHORT);
ImageToast.show();
}
}