添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

无法解决Udacity ADT中的ViewPager和FragmentPagerAdapter问题

0 人关注

我想按照讲师说的添加一个FragmentPagerAdapter(Udacity Android Development Track - Multiscreen Apps),我看到FragmentPagerAdapter类已被废弃,而我应该使用FragmentStateAdapter,我做了很多修改(正如android开发者网站中提到的)。之后,当我放上FragmentManager时,它给了我错误,当我搜索时,我发现我应该写FragmentActivity而不是FragmentManager。 但在MainActivity中,由于getSupportFragmentManager(),它给我带来了错误。

我怎样才能解决这个错误?

另一个问题是关于FragmentPagerAdapter中的getPageTitle。在FragmentStateAdapter中是否有一个替代方案可以使用。

My Adapter >>>

public class CategoryAdapter extends FragmentStateAdapter {
    private Context mContext;
    public CategoryAdapter(@NonNull Context context, FragmentActivity fa) {
        super(fa);
        mContext = context;
    @NonNull
    @Override
    public Fragment createFragment(int position) {
        if (position == 0) {
            return new NumbersFragment();
        } else if (position == 1) {
            return new FamilyFragment();
        } else if (position == 2) {
            return new ColorsFragment();
        } else {
            return new PhrasesFragment();
    @Override
    public int getItemCount() {
        return 4;
    @Override
    public CharSequence getPageTitle(int position) {
        if (position == 0) {
            return mContext.getString(R.string.category_numbers);
        } else if (position == 1) {
            return mContext.getString(R.string.category_family);
        } else if (position == 2) {
            return mContext.getString(R.string.category_colors);
        } else {
            return mContext.getString(R.string.category_phrases);

My MainActivity >>>

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ViewPager2 viewPager = findViewById(R.id.viewpager);
        CategoryAdapter adapter = new CategoryAdapter(getSupportFragmentManager());
        viewPager.setAdapter(adapter);
        TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);