Ändern Sie das Viewpager-Fragment mit einem buttonClick
Ich versuche, das Viewpager-Fragment durch Klicken auf eine Schaltfläche zu ändern. Ich habe 5 Fragmente, jedes Fragment hat eine eigene XML-Datei (frag1.xml, frag2.xml usw.). Jedes Fragment hat 5 Schaltflächen, die zu anderen Seiten des Viewpagers gehen sollen. Das Problem ist jedoch, wie ich im FragmentPageAdapter überprüfe, auf welche Schaltfläche geklickt wird und wie ich dorthin komme.
Ich werde den Code zeigen, den ich habe, dann sollte klar sein, denke ich. Stellen Sie es sich wie einen Homescreen vor, der unten Punkte aufweist. Wenn Sie auf einen bestimmten Punkt klicken, gelangen Sie zum entsprechenden Bildschirm.
FragmentPagerAdapter
public class MyFragmentPagerAdapter extends FragmentPagerAdapter{
final int PAGE_COUNT = 6;
/** Constructor of the class */
public MyFragmentPagerAdapter(FragmentManager fm) {
super(fm);
}
/** This method will be invoked when a page is requested to create */
@Override
public Fragment getItem(int arg0) {
switch(arg0){
case 0:
return new Fragment1();
case 1:
return new Fragment2();
case 2:
return new Fragment3();
case 3:
return new Fragment4();
case 4:
return new Fragment5();
default:
return null;
}
}
/** Returns the number of pages */
@Override
public int getCount() {
return PAGE_COUNT;
}
}
Frag1.java
public class Frag1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.frag_one, container, false);
OnClickListener changeFrag = new OnClickListener() {
@Override
public void onClick(View v) {
/*When I click this button in my fragment, I'd like it to go to fragment 3 for example*/
}
};
ImageButton btnT = (ImageButton) v.findViewById(R.id.frag3);
btnT.setOnClickListener(changeFrag);
return v;
}
}
Hauptaktivität
public class MainActivity erweitert FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);/** Getting a reference to the ViewPager defined the layout file */
ViewPager pager = (ViewPager) findViewById(R.id.pager);
/** Getting fragment manager */
FragmentManager fm = getSupportFragmentManager();
/** Instantiating FragmentPagerAdapter */
MyFragmentPagerAdapter pagerAdapter = new MyFragmentPagerAdapter(fm);
/** Setting the pagerAdapter to the pager object */
pager.setAdapter(pagerAdapter);
//pager.setPageTransformer(true, new ZoomOutPageTransformer());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
Ist so etwas möglich? Kann mir bitte jemand in die richtige Richtung helfen?