Fragment aktualizacji ViewPager po przeciągnięciu

Mam problem, z którym borykałem się przez ostatnie 2 dni.

Buduję aplikację, która używa ActionBar, ViewPager i FragmentPagerAdapter. Kod działania, fragmentów i FragmentPagerAdapter jest dokładnie taki sam, jak kod podany w przykładzie na Androidahttp://developer.android.com/reference/android/support/v4/view/ViewPager.html

Problem, z którym się borykam - zakładając, że mam tylko 2 fragmenty w viewPager. podczas przełączania / przesuwania między nimi fragmenty nie są aktualizowane. onResume nie jest wywoływane, ponieważ viewPager buforuje minimum 1 fragment po obu stronach wyświetlanego fragmentu.

Próbowałem użyć onTabSelected do wykrycia, kiedy fragment został wybrany, a następnie uruchomić metodę z tego fragmentu za pomocą interfejsu (kod poniżej).

public void onTabSelected(Tab tab, FragmentTransaction ft) {
    TabInfo tag = (TabInfo)tab.getTag();
    for (int i=0; i<mTabs.size(); i++) {
        if (mTabs.get(i) == tag) {
            mViewPager.setCurrentItem(i);
        }
    }
    ((IStartStop)getItem(tab.getPosition())).Start();
}

Jednak gdy używana jest metoda Start, wyjątek NullPointerException jest uruchamiany podczas próby zaktualizowania widoku tekstowego. Kod metody początkowej to:

public void Start() {
    TextView tv = _view.findViewById(R.id.text);
    tv.setText("test");
}

Wyjątek jest zgłaszany w linii:

TextView tv = _view.findViewById(R.id.text);

Interfejs IStartStop jest dość prosty:

public interface IStartStop {
    public void Start();
    public void Stop();
}

Nie chcę używać notifyDataSetChanged (); z POSITION_NONE, ponieważ za każdym razem, gdy przeciągam do nowego fragmentu, ładowanie fragmentów zajmuje kilka sekund

W tej chwili fragmenty zawierają tylko widok tekstowy, w przyszłości będą miały animację, dlatego ważne jest, aby:

1- Uruchamiaj animację tylko po zaznaczeniu fragmentu, a nie po zaznaczeniu fragmentu znajdującego się obok (sposób, w jaki ViewPager buforuje i wznawia fragmenty).

2- Zatrzymaj animację, gdy fragment nie jest już wybrany, aby uniknąć marnowania zasobów urządzenia.

Tak, sprawdziłem już wszystko, co jest dostępne w Internecie, ale nic nie działa ze mną.

Bardzo ci dziękuje za pomoc!

questionAnswers(4)

yourAnswerToTheQuestion