单击按钮时如何从 MainActivity 打开 viewpager 中的特定片段页面
How do i open a particular fragement page enshrined in viewpager from MainActivity when i click a button
我一直在努力从 mainactivity 打开 viewpager 适配器中的一些特定片段。现在,MainActivtity 与我定义 viewpager 的 Tips_4 Activity 完全不同。
我想要的是当我点击一个按钮时它会直接打开一个特定的片段。
这也是我尝试在单击按钮时仅 fragment_page1 打开的内容,但我想通过单击 Main[=36= 中的按钮来定位某些特定页面].
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);
}
});
这是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();
}
});
}
这是 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;
}
}
这是我定义viewpager
的Tips_4Activity
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);
}
}
将您想要的页码添加到您启动 activity 的意图中,并使用它来设置要显示的正确页面。
例如
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);
}
在Tips_4Activity
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);
....
我一直在努力从 mainactivity 打开 viewpager 适配器中的一些特定片段。现在,MainActivtity 与我定义 viewpager 的 Tips_4 Activity 完全不同。 我想要的是当我点击一个按钮时它会直接打开一个特定的片段。
这也是我尝试在单击按钮时仅 fragment_page1 打开的内容,但我想通过单击 Main[=36= 中的按钮来定位某些特定页面].
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);
}
});
这是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();
}
});
}
这是 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;
}
}
这是我定义viewpager
的Tips_4Activityprotected 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);
}
}
将您想要的页码添加到您启动 activity 的意图中,并使用它来设置要显示的正确页面。
例如
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);
}
在Tips_4Activity
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);
....