作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试从另一个扩展 FragmentStatePagerAdapter 的类中获取 fragment 列表的大小,但我不知道如何使用它。如果它是一个内部类,我没有问题,但是将适配器作为一个单独的类使用时,我无法让它工作。
这是mainActivity
public class MainActivity extends AppCompatActivity {
public List<Fragment> fragmentList = new ArrayList<>();
public List<String> tabTitles = new ArrayList<>();
private TabPagerAdapter pagerAdapter;
private TabLayout tabLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
fragmentList.add(Fragment1.newInstance());
fragmentList.add(Fragment2.newInstance());
fragmentList.add(Fragment3.newInstance());
tabTitles.add("Tab 1");
tabTitles.add("Tab 2");
tabTitles.add("Tab 3");
// Setup the viewPager
ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
pagerAdapter = new TabPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(pagerAdapter);
// Setup the Tabs
tabLayout = (TabLayout) findViewById(R.id.tab_layout);
// This method ensures that tab selection events update the ViewPager and page changes update the selected tab.
tabLayout.setupWithViewPager(viewPager);
}
这是 TabPagerAdapter,我想获取 fragment 列表的大小和位置。我该怎么做?
public class TabPagerAdapter extends FragmentStatePagerAdapter {
private MainActivity mMainActivity;
public TabPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int pos) {
//this code gives error
return mMainActivity.fragmentList.get(pos);
}
@Override
public int getCount() {
//this line gives error
return mMainActivity.fragmentList.size();
}
最佳答案
您可以在构造函数中传递fragmentList
引用:
public class TabPagerAdapter extends FragmentStatePagerAdapter {
private MainActivity mMainActivity;
private List<Fragment> fragmentList;
public TabPagerAdapter(FragmentManager fm, List<Fragment> fragmentList) {
super(fm);
this.fragmentList = fragmentList;
}
@Override
public Fragment getItem(int pos) {
return fragmentList.get(pos);
}
@Override
public int getCount() {
return fragmentList.size();
}
}
然后像这样创建TabPagerAdapter
:
pagerAdapter = new TabPagerAdapter(getSupportFragmentManager(), fragmentList);
关于android - 如何从另一个类调用 fragment 列表的 getCount()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37887603/
我是一名优秀的程序员,十分优秀!