FragmentStatePagerAdapter中"isViewFromObject(视图视图,对象对象)"的作用是什么?

Ash*_*win 23 android android-viewpager

我正在使用FragmentStatePagerAdapter我的View Pager.如果isViewFromObject (View view, Object object)返回,则返回的片段不会显示在屏幕上false.这是为什么?
开发人员说,Determines whether a page View is associated with a specific key object as returned by instantiateItem(ViewGroup, int). This method is required for a PagerAdapter to function properly.但我不清楚这个定义.

Kus*_*hal 18

该方法 instantiateItem(ViewGroup, int)返回Object特定视图.PagerAdapter实现考虑这个Object作为key当viewpager更改页面时,值.

因此,如果我们从中返回视图本身instantiateItem(ViewGroup, int),那么我们key对该页面的视图就会成为视图本身.我们可以检查return view == object;isViewFromObject (View view, Object object)其中将始终返回true,我们的页面会显示:

public boolean isViewFromObject(View view, Object object) {
    return view == object;
}
Run Code Online (Sandbox Code Playgroud)

来自/sf/answers/1174057531/的更多见解:

滑动时,ViewPager从数组中获取视图位置或实例化它,并将此视图与ViewPager带适配器方法的子视图进行比较public boolean isViewFromObject(View view, Object object).等于对象的视图显示给用户ViewPager.如果没有视图,则显示空白屏幕.

以下是ViewPager将视图与object进行比较的方法:

ItemInfo infoForChild(View child) {
    for (int i=0; i<mItems.size(); i++) {
        ItemInfo ii = mItems.get(i);
        if (mAdapter.isViewFromObject(child, ii.object)) {
            return ii;
        }
    }
    return null;
}
Run Code Online (Sandbox Code Playgroud)