I have been struggling to open some specific fragments enshrined in viewpager adapter from mainactivity. Now, the MainActivtity is entirely different from the Tips_4 Activity where i defined viewpager. What i want is when i click a button it will go staight and open a specific fragment.
This is also what i tried that opened just fragment_page1 when button is clicked but I want to target some specific page with button click from MainActivity.
Button Tips0 = (Button)findViewById(R.id.mybtn1);
Tips0.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(MainActivity.this, Tips_4.class);
startActivity(i);
}
});
This is the MainActivity.java
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//--------I added button click listeners below ----------
Tips1 = (Button) findViewById(R.id.mybtn1);
Tips1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Fragment fragment = Page1Fragment.newInstance(1, "Page # 1");
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.container, fragment);
transaction.addToBackStack(null);
transaction.commit();
}
});
Tips2 = (Button) findViewById(R.id.mybtn2);
Tips2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Fragment fragment = Page2Fragment.newInstance(1, "Page # 2");
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.container, fragment);
transaction.addToBackStack(null);
transaction.commit();
}
});
Tips3 = (Button) findViewById(R.id.mybtn1);
Tips3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Fragment fragment = Page3Fragment.newInstance(1, "Page # 3");
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.container, fragment);
transaction.addToBackStack(null);
transaction.commit();
}
});
}
This is SimpleFragmentPageAdapter
public class SimpleFragmentPageAdapter extends FragmentPagerAdapter {
private String[] tabtitle=new String[]{"Description","Directions","Developers","Page1","Page2","Page3","Page4","Page5","Page6","Page7","Page8","Page9","Page10","Page11","Page12","Page13","Page14","Page15","Page16","Page17","Page18","Page19","Page20","Page21","Page22","Page23","Page24","Page25","Page26","Page27","Page28","Page29","Page30","Page31","Page32","Page33","Page34","Page35","Page36","Page37","Page38","Page39","Page40","Page41","Page42","Page43","Page44"};
Context context;
private int pagecount=45;
public SimpleFragmentPageAdapter(FragmentManager fm, Context context) {
super(fm);
this.context=context;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0: //Fragment # 0 - This will show DevelopersFragment
return DescriptionFragment.newInstance(0, "page # 0");
case 1: //Fragment # 0 - This will show Page1Fragment
return Page1Fragment.newInstance(1, "Page # 1");
case 2: //Fragment # 0 - This will show Page2Fragment
return Page2Fragment.newInstance(2, "Page # 2");
case 3: //Fragment # 0 - This will show Page3Fragment
return Page3Fragment.newInstance(3, "Page # 3");
case 4: //Fragment # 0 - This will show Page4Fragment
return Page4Fragment.newInstance(4, "Page # 4");
case 5: //Fragment # 0 - This will show Page5Fragment
return Page5Fragment.newInstance(5, "Page # 5");
case 6: //Fragment # 0 - This will show Page6Fragment
return Page6Fragment.newInstance(6, "Page # 6");
case 7: //Fragment # 0 - This will show Page7Fragment
return Page7Fragment.newInstance(7, "Page # 7");
case 8: //Fragment # 0 - This will show Page8Fragment
return Page8Fragment.newInstance(8, "Page # 8");
case 9: //Fragment # 0 - This will show Page9Fragment
return Page9Fragment.newInstance(9, "Page # 9");
case 10: //Fragment # 0 - This will show Page10Fragment
return Page10Fragment.newInstance(10, "Page # 10");
case 11: //Fragment # 0 - This will show Page11Fragment
return Page11Fragment.newInstance(11, "Page # 11");
case 12: //Fragment # 0 - This will show Page12Fragment
return Page12Fragment.newInstance(12, "Page12");
case 13: //Fragment # 0 - This will show Page13Fragment
return Page13Fragment.newInstance(13, "Page13");
case 14: //Fragment # 0 - This will show Page14Fragment
return Page14Fragment.newInstance(14, "Page14");
case 15: //Fragment # 0 - This will show Page15Fragment
return Page15Fragment.newInstance(15, "Page15");
case 16: //Fragment # 0 - This will show Page16Fragment
return Page16Fragment.newInstance(16, "Page16");
case 17: //Fragment # 0 - This will show Page17Fragment
return Page17Fragment.newInstance(17, "Page17");
case 18: //Fragment # 0 - This will show Page18Fragment
return Page18Fragment.newInstance(18, "Page18");
case 19: //Fragment # 0 - This will show Page19Fragment
return Page19Fragment.newInstance(19, "Page19");
case 20: //Fragment # 0 - This will show Page20Fragment
return Page20Fragment.newInstance(20, "Page20");
case 21: //Fragment # 0 - This will show Page21Fragment
return Page21Fragment.newInstance(21, "Page21");
case 22: //Fragment # 0 - This will show Page22Fragment
return Page22Fragment.newInstance(22, "Page22");
case 23: //Fragment # 0 - This will show Page23Fragment
return Page23Fragment.newInstance(23, "Page23");
case 24: //Fragment # 0 - This will show Page24Fragment
return Page24Fragment.newInstance(24, "Page24");
case 25: //Fragment # 0 - This will show Page25Fragment
return Page25Fragment.newInstance(25, "Page25");
case 26: //Fragment # 0 - This will show Page26Fragment
return Page26Fragment.newInstance(26, "Page26");
case 27: //Fragment # 0 - This will show Page27Fragment
return Page27Fragment.newInstance(27, "Page27");
case 28: //Fragment # 0 - This will show Page28Fragment
return Page28Fragment.newInstance(28, "Page28");
case 29: //Fragment # 0 - This will show Page29Fragment
return Page29Fragment.newInstance(29, "Page29");
case 30: //Fragment # 0 - This will show Page30Fragment
return Page30Fragment.newInstance(30, "Page30");
case 31: //Fragment # 0 - This will show Page31Fragment
return Page31Fragment.newInstance(31, "Page31");
case 32: //Fragment # 0 - This will show Page32Fragment
return Page32Fragment.newInstance(32, "Page32");
case 33: //Fragment # 0 - This will show Page33Fragment
return Page33Fragment.newInstance(33, "Page33");
case 34: //Fragment # 0 - This will show Page34Fragment
return Page34Fragment.newInstance(34, "Page34");
case 35: //Fragment # 0 - This will show Page35Fragment
return Page35Fragment.newInstance(35, "Page35");
case 36: //Fragment # 0 - This will show Page36Fragment
return Page36Fragment.newInstance(36, "Page36");
case 37: //Fragment # 0 - This will show Page37Fragment
return Page37Fragment.newInstance(37, "Page37");
case 38: //Fragment # 0 - This will show Page38Fragment
return Page38Fragment.newInstance(38, "Page38");
case 39: //Fragment # 0 - This will show Page39Fragment
return Page39Fragment.newInstance(39, "Page39");
case 40: //Fragment # 0 - This will show Page40Fragment
return Page40Fragment.newInstance(40, "Page40");
case 41: //Fragment # 0 - This will show Page41Fragment
return Page41Fragment.newInstance(41, "Page41");
case 42: //Fragment # 0 - This will show Page41Fragment
return Page42Fragment.newInstance(42, "Page42");
case 43: //Fragment # 0 - This will show Page41Fragment
return Page43Fragment.newInstance(43, "Page43");
case 44: //Fragment # 0 - This will show Page41Fragment
return Page44Fragment.newInstance(44, "Page44");
default:
return null;
}
}
@Override
public int getCount() {
return pagecount;
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return "Maths page" + position;
}
}
This is Tips_4 Activity where i defined viewpager
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tips_4);
toolbar= findViewById(R.id.app_bar);
setSupportActionBar(toolbar);
ViewPager viewPager= (ViewPager) findViewById(R.id.view_pager);
viewPager.setAdapter(new SimpleFragmentPageAdapter(getSupportFragmentManager(),this));
//Attach the page change listener inside the activity
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
// This method will be invoked when a new page becomes selected
@Override
public void onPageSelected(int position) {
Toast.makeText(Tips_4.this, "Selected Maths Page:" + position, Toast.LENGTH_SHORT).show();
}
// This method will be invoked when the current page is scrolled
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetpixels) {
}
// Called when the scroll state changes:
//SCROLL_STATE_IDLE, SCROLL_STATE_DRAGGING, SCROLL_STATE_SETTLING
@Override
public void onPageScrollStateChanged(int state) {
}
});
tabLayout= (TabLayout) findViewById(R.id.tab_layout);
tabLayout.setupWithViewPager(viewPager);
}
}
Add the page number you want to the intent you start the activity with the viewpager in and the use that to set the correct page to show.
e.g.
public void onClick(View view) {
Intent i = new Intent(MainActivity.this, Tips_4.class);
// Start page 5 as the number starts at zero set the value to 4
i.putExtra("startPage", 4);
startActivity(i);
}
in Tips_4 Activity
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Get the start page passed to us or default to first page
Intent mIntent = getIntent();
int startPage = mIntent.getIntExtra("startPage", 0);
setContentView(R.layout.activity_tips_4);
toolbar= findViewById(R.id.app_bar);
setSupportActionBar(toolbar);
ViewPager viewPager= (ViewPager) findViewById(R.id.view_pager);
viewPager.setAdapter(new SimpleFragmentPageAdapter(getSupportFragmentManager(),this));
// set the current page to the start page
viewpager.setCurrentItem(startPage);
....