Android Probleme mit ViewPager?

bruce85

Bekanntes Mitglied
Hallo,
ich hab da ein Problem mit dem ViewPager und zwar, wenn ich mindestens 2 Seiten weiter blätter, dann gehen die Variablen von den Seiten davor, verloren.

In MainActivity->OnCreate habe ich die Fragmente so erstellt:
Java:
aFragment = new AFragment();
bFragment = new BFragment();
cFragment = new CFragment();
dFragment = new DFragment();

z.B. in AFragment->onCreateView habe ich eine ListView und diese wird immer wieder neu geladen, wenn ich paar Seiten wechsel und wieder zurückkehre, also onCreateView wird dann immer ausgeführt:
Java:
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_a, container, false);
        
        listView = (ListView) view.findViewById(R.id.listView);
        rowItems = new ArrayList<RowItem>();
        customBaseAdapter = new CustomBaseAdapter(MainActivity.getActivity(), rowItems);
        listView.setAdapter(customBaseAdapter);
        return view;
    }

in MainActivity gebe ich die einzelnen Fragmente zurück:
Java:
public class MyPagerAdapter extends FragmentPagerAdapter {

		private final String[] TITLES = { "A", "B", "C", "D" };

		public MyPagerAdapter(FragmentManager fm) {
			super(fm);
		}

		@Override
		public CharSequence getPageTitle(int position) {
			return TITLES[position];
		}

		@Override
		public int getCount() {
			return TITLES.length;
		}

		@Override
		public Fragment getItem(int position) {
			switch (position) {
            case 0:
                return aFragment;
            case 1:
                return bFragment;
            case 2:
                return cFragment;
            case 3:
                return dFragment;
            default:
                return null;
            }
		}
	}

Wie könnte ich das Problem denn lösen?

Ich danbke euch schonmal für die Hilfe.

MfG
 

dzim

Top Contributor
Der ViewPager lädt immer nur die Fragmente "links" und "rechts" vom gerade aktuellen. Alle davor/dahinter werden beendet. Du kannst aber die Daten aber gern "zwischenspeichern" und beim wieder Anzeigen eintragen, etc.

Fragments | Android Developers

Zum Speichern: #onSaveInstanceState(Bundle outState)
Zum wiederherstellen: #onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
 

bruce85

Bekanntes Mitglied
Vielen Dank.

Ich hab das versucht, aber onSaveInstanceState wird nie ausgeführt, wenn ich ein Paar Page weiter blätter und wieder zurückkehre.
Java:
@Override
    public void onSaveInstanceState(Bundle outState) {
    	super.onSaveInstanceState(outState);
    	Toast.makeText(MainActivity.getActivity(), "Test", Toast.LENGTH_LONG).show();
    	outState.putString("test", test);
    }

Java:
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_search, container, false);
        
        if (savedInstanceState != null) {
        	String test = savedInstanceState.getString("test");
        }
        
        return view;
    }

woran könnte das denn liegen?

Gruss
 

Ch4t4r

Aktives Mitglied
Es dürfte funktionieren, wenn du den super Aufruf ans ende der Methode setzt, da in ihm letztendlich das Bundle gespeichert wird. Änderst du nach dem Aufruf Dinge im bundle werden die nicht gespeichert.
 

bruce85

Bekanntes Mitglied
Das funktioniert auch nicht.

Liegt es Vielleicht daran, das ich die Klassen von den Fragmenten in der MainActivity->onCreate erstelle und diese dann so zurückgebe?
Java:
public class MyPagerAdapter extends FragmentPagerAdapter {

		private final String[] TITLES = { "A", "B", "C", "D" };

		public MyPagerAdapter(FragmentManager fm) {
			super(fm);
		}

		@Override
		public CharSequence getPageTitle(int position) {
			return TITLES[position];
		}

		@Override
		public int getCount() {
			return TITLES.length;
		}

		@Override
		public Fragment getItem(int position) {
			switch (position) {
            case 0:
            	return aFragment;
            case 1:
                return bFragment;
            case 2:
            	return cFragment;
            case 3:
                return dFragment;
            default:
                return null;
            }
			//return SuperAwesomeCardFragment.newInstance(position);
		}
	}
und die nicht so z.B. immer wieder neu erstelle?
Java:
case 0:
    return new AFragment();

Da ich bei den Fragmente "Methoden" drin habe, von dem ich aus der MainActivity zugreifen möchte, habe ich die Fragmente in der MainActivity->onCreate erstellt und die Instanzen von den Fragmenten, gebe ich dann so z.B. zurfück:
Java:
case 0:
    return aFragment;

Nur irgendwie wird "onSaveInstanceState" nie aufgerufen, bei den Fragmenten.

Muss ich Vielleicht bei den Fragmenten "onCreate" noch etwas aktivieren oder hinzufügen?

Gruss
 
Zuletzt bearbeitet:

bruce85

Bekanntes Mitglied
Ich hab das jetzt anders gelöst.

Ich habe ein neuer Instanz von Bundle erzeugt und die Methode "onSaveInstanceState(Bundle outState)" rufe ich dann manuel auf und speichere die Daten.

Im onCreateView lese ich dann, von der neu erzeugten Instanz von Bundle, die werte wieder aus.

Klappt einwandfrei und vielen Dank für die Hilfe.

MfG
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Probleme mit ViewPager und Activity Android & Cross-Platform Mobile Apps 1
J Android Probleme mit BLE-Notify Android & Cross-Platform Mobile Apps 2
J Android Probleme mit der Realm Datenbank Android & Cross-Platform Mobile Apps 3
J Android Probleme mit Navigation-Fragments? Android & Cross-Platform Mobile Apps 0
N Probleme mit custom dynamic ListView Android & Cross-Platform Mobile Apps 15
B Android Probleme mit Android Studio Android & Cross-Platform Mobile Apps 6
B Android Probleme mit Realm Datenbank Android & Cross-Platform Mobile Apps 2
B Android Probleme mit ArrayList Android & Cross-Platform Mobile Apps 6
J Android Probleme mit FileProvider Android & Cross-Platform Mobile Apps 1
B Probleme mit Firebase Authentication Android & Cross-Platform Mobile Apps 25
H Android Probleme mit SearchView in ArrayAdapter Android & Cross-Platform Mobile Apps 7
ATZENPOWER Android Probleme mit mobilen Daten via lte Android & Cross-Platform Mobile Apps 10
S Android Probleme beim Verbinden mit einer HTTPS Seite Android & Cross-Platform Mobile Apps 4
B Android Probleme mit RealmObject? Android & Cross-Platform Mobile Apps 1
M Android ExpandableListView merkwürdige Probleme Android & Cross-Platform Mobile Apps 20
F Probleme mit Google-Maps Android & Cross-Platform Mobile Apps 0
B Android Probleme mit Eclipse? Android & Cross-Platform Mobile Apps 6
E MAVLINK Probleme Android & Cross-Platform Mobile Apps 1
C Android Probleme mit JavaMail Android & Cross-Platform Mobile Apps 5
B Android Probleme mit Facebook-SDK? Android & Cross-Platform Mobile Apps 1
D Android Probleme mit info/warning (1, 902) Android & Cross-Platform Mobile Apps 4
D Android Gallery Probleme Android & Cross-Platform Mobile Apps 3
B Probleme mit App auf Galaxy S3? Android & Cross-Platform Mobile Apps 13
S Hat der AVD-Manager Probleme mit GPS? Android & Cross-Platform Mobile Apps 5
P Probleme mit xml-Layout Android & Cross-Platform Mobile Apps 2
P Android Probleme mit Spinner Android & Cross-Platform Mobile Apps 3
F Layout mit listViews (Scrolling-Probleme) Android & Cross-Platform Mobile Apps 2
A Android Probleme mit Dialog Android & Cross-Platform Mobile Apps 4
U SQLite-Datenbank Probleme Android & Cross-Platform Mobile Apps 8
T Android Probleme bei Facebook Integration Android & Cross-Platform Mobile Apps 5
tfa Android Layout-Probleme: View programmatisch erweitern (addContentView) Android & Cross-Platform Mobile Apps 7
A Probleme mit ListView / ArrayAdapter Android & Cross-Platform Mobile Apps 3
A Probleme mit Form.isShown Android & Cross-Platform Mobile Apps 9
A Probleme mit Calendar auf dem Handy Android & Cross-Platform Mobile Apps 3
U Probleme mit der drawString Methode bei Canvas Android & Cross-Platform Mobile Apps 8
P Probleme mit dem Deployment Android & Cross-Platform Mobile Apps 3
P Probleme mit Streams Android & Cross-Platform Mobile Apps 4
C 2 kleine Probleme (Datei lesen, String durchsuchen) Android & Cross-Platform Mobile Apps 16
G Proguard Obfuscator macht Probleme Android & Cross-Platform Mobile Apps 2
P Probleme mit RMS Android & Cross-Platform Mobile Apps 5
P ViewPager Problem Android & Cross-Platform Mobile Apps 1
B Android Fragen zu ViewPager? Android & Cross-Platform Mobile Apps 0
E Android Fragmentanimation mit ViewPager - Architekturproblem? Android & Cross-Platform Mobile Apps 3
N Viewpager Fragments replace Android & Cross-Platform Mobile Apps 2

Ähnliche Java Themen

Neue Themen


Oben