ViewPager onPageAusgewählt für die erste Seite
Wenn Sie also einen ViewPager verwenden, wird der Listener onPageSelected nicht für die erste Seite aufgerufendiese.
Ich habe einige Logik, die einige teurere UI-Elemente für die aktuell ausgewählte Seite auffüllt, und dies funktioniert, wenn die Seite geändert wird, aberit doesn't work for the first page.
Wenn ich das aktuelle Element nach dem Listener setze, wird der Rückruf für die erste Seite ausgelöst, aber die Ansicht wurde noch nicht initialisiert, sodass ich sie nicht bearbeiten kann:
// Inside PagerAdapter.instantiateItem
ViewHolder vh = new ViewHolder();
cursor.moveToPosition(position);
vh.view = adapter.newView(context, cursor, null);
// Set position as tag so we can retrieve it with findViewByTag
vh.view.setTag(position);
((ViewPager) collection).addView(vh.view,0);
return vh;
// Inside MyActivity.onCreate
pagerAdapter = new SingleMessagePagerAdapter(this, cursor);
pager = (ViewPager)findViewById(R.id.message_pager);
pager.setAdapter(pagerAdapter);
pager.setOnPageSelectedListener(this);
pager.setCurrentItem(selectedItem);
// Inside MyActivity.onPageSelected
// Retrieve tagged view
View view = pager.findViewWithTag(position);
Hierview
endet, weil null zu seinPagerAdapter.instantiateItem
wurde noch nicht ausgeführt. Meine Frage ist also, an welchem Punkt im Aktivitätslebenszyklus kann ich sicher sein, dass der ViewPager die Ansicht initialisiert hat? Ich habe es drinnen versuchtActivity.onAttachedToWindow
undActivity.onResume
aber es sieht so aus, als ob beide schon einmal gefeuert wurdenPagerAdapter.instantiateItem
.