【发布时间】:2018-06-18 12:17:20
【问题描述】:
我想知道是否有人可以帮助我。我需要在运行时更改各个选项卡中的片段。我知道应该使用 FragmentPagerAdapter 来完成,但这就是我设法找到的全部内容。我正在使用安卓工作室。我的项目在 API 22 上运行。感谢所有答案! 编辑:这是代码。
这里我设置了标签式布局类
Stack<Fragment> Tab1;
Stack<Fragment> Tab2;
Stack<Fragment> Tab3;
private SectionsPagerAdapter mSectionsPagerAdapter;
private ViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_app_root);
/*Tab1 = new Stack<Fragment>();
Tab1.addElement(new Tab1Informations());
Tab2 = new Stack<Fragment>();
Tab2.addElement(new Tab2Events());
Tab3 = new Stack<Fragment>();
Tab3.addElement(new tab3tests());*/
// Create the adapter that will return a fragment for each of the three
// primary sections of the activity.
//mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager(), Tab1.peek(), Tab2.peek(), Tab3.peek());
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager(),new Tab1Informations(), new Tab2Events(), new tab3tests());
// Set up the ViewPager with the sections adapter.
mViewPager = (ViewPager) findViewById(R.id.container);
mViewPager.setAdapter(mSectionsPagerAdapter);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager));
CreateButtonListener();
}
这里我尝试更改 SectionChangedAdapter
Stack<Fragment> Tab1;
Stack<Fragment> Tab2;
Stack<Fragment> Tab3;
/**
* The {@link android.support.v4.view.PagerAdapter} that will provide
* fragments for each of the sections. We use a
* {@link FragmentPagerAdapter} derivative, which will keep every
* loaded fragment in memory. If this becomes too memory intensive, it
* may be best to switch to a
* {@link android.support.v4.app.FragmentStatePagerAdapter}.
*/
private SectionsPagerAdapter mSectionsPagerAdapter;
private ViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_app_root);
/*Tab1 = new Stack<Fragment>();
Tab1.addElement(new Tab1Informations());
Tab2 = new Stack<Fragment>();
Tab2.addElement(new Tab2Events());
Tab3 = new Stack<Fragment>();
Tab3.addElement(new tab3tests());*/
//mSectionsPagerAdapter = new
SectionsPagerAdapter(getSupportFragmentManager(), Tab1.peek(),
Tab2.peek(), Tab3.peek());
mSectionsPagerAdapter = new
SectionsPagerAdapter(getSupportFragmentManager(),new Tab1Informations(),
new Tab2Events(), new tab3tests());
// Set up the ViewPager with the sections adapter.
mViewPager = (ViewPager) findViewById(R.id.container);
mViewPager.setAdapter(mSectionsPagerAdapter);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
mViewPager.addOnPageChangeListener(new
TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.addOnTabSelectedListener(new
TabLayout.ViewPagerOnTabSelectedListener(mViewPager));
CreateButtonListener();
}
我在这里定义了适配器本身。 公共类 SectionsPagerAdapter 扩展 片段页面适配器{ 片段选项卡1; 片段选项卡2; 片段tab3;
public SectionsPagerAdapter(FragmentManager fm, Fragment tab1, Fragment
tab2, Fragment tab3){
super(fm);
this.tab1 = tab1;
this.tab2 = tab2;
this.tab3 = tab3;
}
@Override
public Fragment getItem(int position){
switch(position){
case 0:
return tab1;
case 1:
return tab2;
case 2:
return tab3;
default:
return null;
}
}
@Override
public int getCount(){
// Show 3 total pages.
return 3;
}
@Override
public CharSequence getPageTitle(int position){
switch(position){
case 0:
return getString(R.string.InformationsTabTitle);
case 1:
return getString(R.string.EventsTabTitle);
case 2:
return getString(R.string.TestsTabTitle);
default:
return null;
}
}
}`
【问题讨论】:
-
欢迎使用 Stack Overflow!您的问题目前缺少针对您的问题的研究。您的问题不是以前没有出现过的,因此只需使用谷歌搜索您的问题或使用此处的搜索功能,您应该可以轻松找到帮助您解决问题的教程。如果您将问题的范围缩小到特定问题,并包含您尝试解决此问题的一些代码,我们肯定能够为您提供帮助。
-
欢迎来到 Stack Overflow!请edit您的问题显示the code you have so far。我们这里的大多数人都很乐意帮助你提高你的手艺,但作为短期无偿编程人员不太乐意。以minimal reproducible example 向我们展示您的工作,您所期望的结果和您得到的结果,我们将帮助您解决问题。重新阅读How to Ask可能会有所帮助。
-
FragmentPagerAdapter具有与列表视图适配器相同的notifyDataSetChanged方法,并且工作方式与之类似。您的适配器按索引返回片段,您必须更改它返回的内容,然后调用notifyDataSetChanged
标签: java android android-layout android-fragments tabs