我想按照讲师说的添加一个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);