片段在ViewPager中为空白

时间:2018-10-30 11:00:59

标签: android android-fragments android-viewpager

首先,我知道有很多类似的问题,但是,这些建议都没有。

我有一个ViewPager,我想与片段一起使用。 ViewPager可以正常工作,并且我可以在日志中看到可以左右滚动。当我尝试向左滚动并且没有上一个项目时(或者在没有后续项目的情况下向右),我可以看到动画。但是,屏幕保持空白。该片段本身具有功能,但是,我在不同的上下文中对其进行了尝试。

我正在使用androidx命名空间包。

我尝试过的事情(<-->意味着我都尝试过):

  • FragmentPagerAdapter <-> FragmentStatePagerAdapter
  • getFragmentManager() <-> getChildFragmentManager()作为适配器的FragmentManager
  • setSaveFromParentEnabled为假。
  • setOffscreenPageLimit到碎片数。

相关代码(我已取出与该问题无关的代码部分):

包含Fragment的{​​{1}}:

ViewPager

public class AddListingMediaFragment extends Fragment { private ViewPager viewPagerTop; private AddMediaAdapter addMediaAdapter; @Override public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_add_listing_media, container, false); setupViewPagerTop(view); return view; } private void setupViewPagerTop(View view) { viewPagerTop = view.findViewById(R.id.view_pager_top); addMediaAdapter = new AddMediaAdapter(getChildFragmentManager()); viewPagerTop.setAdapter(addMediaAdapter); viewPagerTop.setSaveFromParentEnabled(false); viewPagerTop.setOffscreenPageLimit(5); } } (请注意,如上所述,我已经尝试过AdapterFragmentPagerAdapter

FragmentStatePagerAdapter

布局文件:

public class AddMediaAdapter extends FragmentPagerAdapter {
    private static final String TAG = AddMediaAdapter.class.getSimpleName();

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

    @Override
    public int getCount() {
        return 5;
    }

    @Override
    public Fragment getItem(int position) {
        Log.i(TAG, "getItem: " + String.valueOf(position));
        return new AddListingMediaCameraFragment();
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == object;
    }
}

1 个答案:

答案 0 :(得分:3)

您不需要在适配器中覆盖isViewFromObjectFragmentPagerAdapter已经处理了它。 ViewPager调用此方法来决定如何呈现页面。

您的view == object将返回false,因为该对象始终是Fragment而不是View。因此,只需删除覆盖,它将解决此问题。