在Android上的ViewPager中替换当前片段

kim*_*imv 5 android android-fragments android-viewpager

我有一个ViewPager ,Fragment如果某个动作发生,我必须更换第一个.

public static class PagerAdapter extends FragmentStatePagerAdapter{

    private TempChannel latestChannel;
    private VideosFragment.SortType sortType;

    public PagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        switch (position){
            case 0:
                if(latestChannel == null) {
                    return new LatestVideosFragment();
                }else{
                    return VideosFragment.getVideosFragment(latestChannel, sortType);
                }
            case 1:
                return new LiveVideosFragment();
            case 2:
                return new ConversationsFragment();
        }
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

基本上,当我单击某个通道时LatestVideosFragment,适配器中的第一个位置应该更改为VideosFragment该类的实例.

public void startLatestChannelFragment(TempChannel channel, VideosFragment.SortType sortType){
    adapter.setLatestChannel(channel, sortType);
    adapter.notifyDataSetChanged();
    Log.d("x", "on channel started");
}
Run Code Online (Sandbox Code Playgroud)

我假设调用notifyDataSetChanged()适配器会更新片段,但事实并非如此.也试过呼吁invalidate()ViewPager没有任何影响.的Fragment,如果我去了第三个选项卡只更新,然后返回到第一.

Bas*_*ein 7

在这里查看答案以获得一些好的解决方案:ViewPager PagerAdapter不更新View

基本上覆盖getItemPosition你的 PagerAdapter意志会给你带来理想的效果.

public int getItemPosition(Object object) {
     return POSITION_NONE;
}
Run Code Online (Sandbox Code Playgroud)