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.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage