android - FragmentStatePagerAdapter中 "isViewFromObject (View view, Object object)"的作用是什么?

标签 android android-viewpager

我在 View Pager 中使用 FragmentStatePagerAdapter。如果 isViewFromObject (View view, Object object) 返回 false,则返回的 Fragment 不会显示在屏幕上。这是为什么?
开发者文档说 Determines 页面 View 是否与由 instantiateItem(ViewGroup, int) 返回的特定键对象相关联。 PagerAdapter 需要此方法才能正常运行。 但我不清楚这个定义。

最佳答案

instantiateItem(ViewGroup, int) 方法返回特定 View 的 ObjectPagerAdapter 实现在 viewpager 更改页面时将此 Object 视为 key 值。

因此,如果我们从 instantiateItem(ViewGroup, int) 返回 View 本身,那么该页面的 key 将成为 View 本身。我们可以检查 return view == object; from isViewFromObject (View view, Object object) 总是返回 true 并且我们的页面将显示:

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

来自 https://stackoverflow.com/a/16772250/1994950 帖子的更多见解:

当您滑动时,ViewPager 从数组中获取 View 位置或实例化它,并使用适配器方法 public boolean isViewFromObject( View View ,对象对象)。在ViewPager 上向用户显示等于object 的 View 。如果没有 View ,则显示空白屏幕。

这里是 ViewPager 方法,用于将 View 与对象进行比较:

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

关于android - FragmentStatePagerAdapter中 "isViewFromObject (View view, Object object)"的作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30995446/

相关文章:

android - 在 react native 的 websocket uri 中传递参数不起作用

android - 在 android 中渲染 HTML

android - fragment 在第二次点击时无法正确显示?

java - 从 MainActivity 修改 Fragment 的 View

android - 将文件写入 Android Q 中可公开访问的文档文件夹 - Scoped Storage

android - 字段 _id 始终为 0

android - 包含 ListView 时对话框太宽

java - 如何在Activity中访问 fragment 的ViewPager View ?

android - PagerTiltleStrip中如何设置选中tab的背景色

android - 从 viewPager 中的 fragment 隐藏父 fragment