Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ';FragmentStatePagerAdapter(androidx.fragment.app.FragmentManager)和#x27;不赞成_Java_Android_Android Fragments - Fatal编程技术网

Java ';FragmentStatePagerAdapter(androidx.fragment.app.FragmentManager)和#x27;不赞成

Java ';FragmentStatePagerAdapter(androidx.fragment.app.FragmentManager)和#x27;不赞成,java,android,android-fragments,Java,Android,Android Fragments,最近,androidx.fragment.app.FragmentManager被弃用,没有合适的解决方案可用 已尝试实施support V4,但无法使用AndroidX。它显示未找到库 PagerAdapter: public ViewPagerAdapter(FragmentManager manager) { super(manager); //... } 提前谢谢 最近,androidx.fragment.app.FragmentManager被弃用 目前还没有人反对它

最近,
androidx.fragment.app.FragmentManager
被弃用,没有合适的解决方案可用

已尝试实施support V4,但无法使用
AndroidX
。它显示未找到库

PagerAdapter:

public ViewPagerAdapter(FragmentManager manager) {
    super(manager);
    //...
}
提前谢谢

最近,androidx.fragment.app.FragmentManager被弃用

目前还没有人反对它。例如

不推荐使用“FragmentStatePagerAdapter(androidx.fragment.app.FragmentManager)”

单个参数
FragmentStatePagerAdapter
构造函数已被弃用。但是,如果您愿意,您将发现:

此构造函数已弃用。 与行为一起使用\u仅恢复\u当前\u片段


因此,将
FragmentStatePagerAdapter(fm)
替换为
FragmentStatePagerAdapter(fm,FragmentStatePagerAdapter.BEHAVIOR\u RESUME\u ONLY\u CURRENT\u FRAGMENT)
,以保留原始单参数构造函数的功能。

您可以如下更改默认构造函数:

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);

谢谢。

我遇到了同样的问题

更改:

private class TestTest extends FragmentStatePagerAdapter
致:

它将改变:

import androidx.legacy.app.FragmentStatePagerAdapter;
致:


以下是Kotlin的解决方案:

class TasksPagerAdapter(fm: FragmentManager) : FragmentStatePagerAdapter(fm,BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT )
替换

public SectionsPagerAdapter(FragmentManager fm) {

    super(fm);
}

或者你也可以去

右键单击->生成->覆盖方法,然后单击第一项,如图所示


完成此操作后,您可能需要在其他地方更改代码。

谢谢,可以尝试super(fm,FragmentStatePagerAdapter.BEHAVIOR\u RESUME\u ONLY\u CURRENT\u FRAGMENT);今天替换这个:超级(fm,FragmentStatePagerAdapter.BEHAVIOR\u RESUME\u ONLY\u CURRENT\u FRAGMENT);对此:超级(fm,FragmentPagerAdapter.BEHAVIOR\u RESUME\u ONLY\u CURRENT\u FRAGMENT);答案现在也被弃用了
FragmentStatePagerAdapter
FragmentPagerAdapter
都被弃用了。我们需要使用
ViewPager2+FragmentStateAdapter
。遵循以下步骤:
class TasksPagerAdapter(fm: FragmentManager) : FragmentStatePagerAdapter(fm,BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT )
public SectionsPagerAdapter(FragmentManager fm) {

    super(fm);
}
public SectionsPagerAdapter(@NonNull FragmentManager fm,
                            int behavior) {
    super(fm,behavior);
}