Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich habe einen ViewPager mit 2 Fragments. Wie kann ich im Fragment 2 in der Methode OnPageChanged eine Methode von Fragment 1 aufrufen?
Und zwar habe ich in Fragment 1 eine Methode, die die Kamera startet. Und ich möchte nun, dass wenn ich von Fragment 2 auf Fragment 1 wechsle, diese Methode gestartet wird.
Also ich bin mir nicht ganz sicher, ob ich deinen Ansatz verstanden habe, aber ich zeige mal, wie ich es machen würde:
Ich habe eine FragmentActivity die einen ActionBar.TabListener implementiert. Ich habe weiterhin natürlich den ViewPager auf dem Content Views (im Layout-XML der Activity definiert). Dann habe ich einen FragmentPagerAdapter der die einzelnen Seiten (in Form von - oh Wunder - Fragmenten) enthält. Diesen Adapter reiche ich an den ViewPager weiter. Ich denke soweit stimmen wir wahrscheinlich überein.
Hier nun eine Kombination aus meinem ViewPager.SimpleOnPageChangeListener (der obere Teil der Implementierung) und meinem Vorschlag, wie du deine Fragment-Methode aufrufen kannst (du solltest vielleicht noch eine "Shutdown"-Methode irgendwo einbauen...)
Java:
mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
// ich habe die Tabs bei genügend Platz in der ActionBar
actionBar.setSelectedNavigationItem(position);
// wenn ich nicht auf dem "Homescreen" bin, dann zeige das Symbol
actionBar.setDisplayHomeAsUpEnabled(position > 0);
// hier kannst du jetzt deine Methode aufrufen: Das wird häßllich!
FragmentManager fm = getSupportFragmentManager();
Fragment fragment = fm.findFragmentByTag(String.format(MainSectionsPagerAdapter.FRAGMENT_TAG, R.id.pager, mViewPager.getCurrentItem()));
// MainSectionsPagerAdapter.FRAGMENT_TAG = "android:switcher:%d:%d"
// irgendwann hab ich das mal im Netz gefunden, frag nicht wo - vergessen...
if (fragment != null && fragment instanceof DasKameraFragment) {
((DasKameraFragment) fragment).starteKamera();
}
}
});
Natürlich habe ich noch die ActionBar.TabListener-Implementierung:
Java:
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
mViewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {}
@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {}