最近不推荐使用androidx.fragment.app.FragmentManager
,并且没有适当的解决方案。
曾经尝试实现支持V4,但不适用于AndroidX
。它显示未找到库。
PagerAdapter:
public ViewPagerAdapter(FragmentManager manager) {
super(manager);
//...
}
谢谢。
答案 0 :(得分:9)
您可以如下更改默认构造函数:
public SectionsPagerAdapter(@NonNull FragmentManager fm, int behavior, Context mContext) {
super(fm, behavior);
this.mContext = mContext;
}
已定义的完整适配器类:
/**
* A [FragmentPagerAdapter] that returns a fragment corresponding to
* one of the sections/tabs/pages.
*/
public class SectionsPagerAdapter extends FragmentStatePagerAdapter {
@StringRes
private static final int[] TAB_TITLES = new int[]{R.string.tab_text_1, R.string.tab_text_2};
private final Context mContext;
public SectionsPagerAdapter(@NonNull FragmentManager fm, int behavior, Context mContext) {
super(fm, behavior);
this.mContext = mContext;
}
@NotNull
@Override
public Fragment getItem(int position) {
// getItem is called to instantiate the fragment for the given page.
// Return a ProductSearchFragment (defined as a static inner class below).
if(position == 0) {
return new ProductSearchFragment();
} else if(position == 1) {
return new GenericSearchFragment();
}
return new ProductSearchFragment();
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return mContext.getResources().getString(TAB_TITLES[position]);
}
@Override
public int getCount() {
// Show 2 total pages.
return 2;
}
}
您可以拨打以下电话:
SectionsPagerAdapter sectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager(), FragmentStatePagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT, this);
谢谢。
答案 1 :(得分:3)
替换
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
使用
public SectionsPagerAdapter(@NonNull FragmentManager fm,
int behavior) {
super(fm,behavior);
}
或者您可以
执行此操作后,您可能需要在其他地方更改代码。
答案 2 :(得分:2)
最近不推荐使用androidx.fragment.app.FragmentManager
目前不推荐使用。例如,it is not marked as deprecated in the documentation。
'FragmentStatePagerAdapter(androidx.fragment.app.FragmentManager)'已弃用
不建议使用单参数FragmentStatePagerAdapter
构造函数。但是,如果您read the documentation for that constructor,则会发现:
不建议使用此构造函数。 将FragmentStatePagerAdapter(FragmentManager, int)与BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT一起使用
因此,将FragmentStatePagerAdapter(fm)
替换为FragmentStatePagerAdapter(fm, FragmentStatePagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT)
,以保留原始一参数构造函数的功能。
答案 3 :(得分:1)
在Kotlin中的解决方案如下:
class TasksPagerAdapter(fm: FragmentManager) : FragmentStatePagerAdapter(fm,BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT )
答案 4 :(得分:0)
我遇到了同样的问题。
更改:
private class TestTest extends FragmentStatePagerAdapter
收件人:
private class TestTest extends FragmentPagerAdapter {
它将改变:
import androidx.legacy.app.FragmentStatePagerAdapter;
收件人:
import androidx.fragment.app.FragmentPagerAdapter;