2016-07-28 5 views
0

Mein ViewPager befindet sich im verschachtelten Fragment, weil ich auch Navigationsschublade habe. Meine Frage ist, wie kann ich Instanz von Viewpager in MainActivity.java aufrufen, so kann ich aktuelle Element von Viewpager mit Methode setCurrentItem() von MainActivity.java in Methode onBackPressed(), wenn zum Beispiel Benutzer ist auf dritten Fragment von Viewpager und wenn er drückt Taste zurück er sollte auf dem ersten Fragment zurückgegeben werden.Wie sollte ich die Viewpager-Instanz in Aktivität aufrufen?

Antwort

0

Zuerst müssen Sie RecyclerView als öffentlich deklarieren. Nicht sicher, ob es statisch sein muss, aber es wird Ihnen sagen, ob es sein muss.

Zweitens müssen Sie eine Instanz des Fragments aufrufen, das den RecyclerView enthält. Zum Beispiel Fragment recyclerFrag = new RecyclerFrag();

Danach versuchen Ihre RecyclerView aus dieser Instanz aufrufen und setCurrentItem() verwenden. Zum Beispiel recyclerFrag.recyclerView.setCurrentItem(0).

0

Ich habe eine Lösung gefunden. Sie sollten zuerst eine Methode in FragmentActivity erstellen, in der Ihre ViewPager initialisiert wird, und den Rückgabetyp ViewPager festlegen. Etwas wie folgt aus:

public ViewPager getViewPager() { 
    return mViewPager; // instance of view pager 
} 

Danach erstellen Objekt Ihrer Fragment in Aktivität, wo Sie Instanz Ansicht Pager wie folgt anrufen:

YourFragment fragment = new YourFragment(); 

Und in meinem Fall sollte ich anrufen viewpager in onBackPressed():

HomeFragment fragment1 = new HomeFragment(); 
      if (fragment1.getViewPager().getCurrentItem() == 1 || fragment1.getViewPager().getCurrentItem() == 2) { 
       fragment1.getViewPager().setCurrentItem(0); 
      } else { 
       super.onBackPressed(); 
      }