gpt4 book ai didi

android - 如何从另一个类调用 fragment 列表的 getCount()?

转载 作者:行者123 更新时间:2023-11-30 01:15:46 26 4
gpt4 key购买 nike

我正在尝试从另一个扩展 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com