Android ViewPager setCurrentItem 在 onResume 后不起作用

2023-12-20

我遇到了这个奇怪的问题ViewPager's setCurrentItem(position, false)工作得很好,然后我切换到另一个活动,在我回到第一个活动后,ViewPager总是以第一个项目结束。尽管我已经添加了setCurrentItem to onResume方法它仍然忽略它。当我尝试将项目设置为越界索引时,它甚至没有抛出任何异常。 尽管稍后当我调用此方法时,当点击“下一步”按钮时,它会按预期工作。 检查我的代码 10 次是否有任何可能的调用setCurrentItem(0)或其他东西,但它根本不存在。


我无法真正回答为什么会发生这种情况,但如果您将 setCurrentItem 调用延迟几毫秒,它应该可以工作。我的猜测是因为在onResume还没有渲染通道,ViewPager 需要一个或类似的东西。

private ViewPager viewPager;

@Override
public void onResume() {
    final int pos = 3;
    viewPager.postDelayed(new Runnable() {

        @Override
        public void run() {
            viewPager.setCurrentItem(pos);
        }
    }, 100);
}

更新:故事时间

所以今天我遇到了 viewpager 忽略我的 setCurrentItem 操作的问题,我在 stackoverflow 中搜索了解决方案。我发现有人有同样的问题并解决了;我实施了修复,但没有成功。哇!回到 stackoverflow 否决那个人造修复提供商,然后......

那是我。我实现了自己的错误非修复,这是我第一次偶然发现这个问题时想到的(后来被遗忘了)。我现在不得不对自己提供错误信息投反对票。


我最初的“修复”起作用的原因不是因为“渲染通道”;问题在于寻呼机的内容是由旋转器控制的。旋转器和寻呼机状态都在 onResume 上恢复,因此旋转器 onItemSelected 侦听器在下一个事件传播周期期间被调用,这确实重新填充了视图寻呼机 - 这次使用不同的默认值。
在初始状态恢复期间删除并重置侦听器修复了该问题。

上面的修复第一次起作用了,因为它设置了寻呼机的当前位置after触发了 onItemSelected 事件。后来,它由于某种原因停止工作(可能应用程序变得太慢 - 在我的实现中我没有使用 100 毫秒,而是 10 毫秒)。然后我在清理周期中删除了 postDelayed,因为它没有改变已经有错误的行为。

更新2:我不能对自己的帖子投反对票。我想,尊贵的切腹者是唯一的选择了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android ViewPager setCurrentItem 在 onResume 后不起作用 的相关文章

随机推荐

  • php代码在html中还是html在php中? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何配置 Mongodb 的缓存大小?

    我需要在 Mongodb 中处理缓存 这样做需要大量 RAM 吗 在这种情况下使用存储引擎有什么特点和优势 方法 重启后无效 bin mongo 管理员 db adminCommand setParameter 1 wiredTigerEn
  • C#:反序列化 XML 文件错误(认为这是命名空间问题 - 但我一生都无法解决)

    我正在反序列化一个来自我们客户之一的 Web 服务的 XML 文件 问题是 在使用 xsd exe 创建类后 我反序列化该文件并得到通常的 XML 文档中存在错误 2 2 视觉工作室错误 我认为这是第 2 行 它指向命名空间声明 XML 文
  • 将 Java 的 Integer 转换为 Scala 的 Int

    我有一段返回的 Java 代码java lang Integer它可以是null someClass getMyInteger 但是当我在 Scala 类中使用它时 我收到此错误 导致 java lang NullPointerExcept
  • HealthKit:HKObserverQuery 未触发

    我正在尝试做一件非常基本的事情 设置一个 HKObserverQuery 以便我可以知道各个数据点何时发生更改 我已确保用户已授权应用程序使用相关数据点 无论出于何种原因 我可以在每次启动应用程序时触发查询 但当我关闭应用程序 进入 健康
  • __unsafe_unretained 和弱并在 ARC 下分配? [复制]

    这个问题在这里已经有答案了 可能的重复 强 弱 保留 unsafe unretained 分配 https stackoverflow com questions 9784762 strong weak retain unsafe unre
  • 如何在WPF选项卡控件中创建梯形选项卡

    如何在WPF选项卡控件中创建梯形选项卡 我想创建非矩形选项卡 看起来像 Google Chrome 中的选项卡或 VS 2008 代码编辑器中的选项卡 可以用 WPF 样式完成还是必须用代码绘制 互联网上有可用的代码示例吗 Edit The
  • 为什么当参数相等时 std::sort 比较函数必须返回 false?

    在 std sort 中 您可以提供第三个参数 它是列表排序方式的基础 如果您希望第一个参数先出现 则返回 true 如果您希望第二个参数先出现 则返回 false 我遇到了这样的问题 我的谓词函数应该是 无效的比较器 我已将其范围缩小到它
  • @mui/material/styles 和 @mui/styles 之间的区别?

    在 Material UI v5 中 一些 API 使用是从 mui material styles like useTheme 一些API的使用是从导入的 mui styles like makeStyles 我可以只使用一个库中的那些与
  • 将通用结构保存到 redis

    在编写 golang Web 服务器时 我必须使用某种缓存 所以我选择了 redis 我需要某种可以接受任何结构并将其作为值保存到 Redis 的函数 有什么方法可以在不使用的情况下做到这一点interface 作为接收参数或重复太多但仍保
  • 包含至少一位数字的字母数字字符串的正则表达式

    我正在寻找具有以下条件的正则表达式 a 至少 13 个字母数字字符 b 最多 17 个字母数字 人物 c 和至少 1 位数字 该正则表达式满足 a 和 b 它如何也满足条件c a zA Z0 9 13 17 输入文本示例 matching
  • 简单GDI项目的Mingw-w64和TDM-GCC之间的差异

    我需要在 Win64 上为 Win64 构建一个简单的非商业工具 处理 Windows GDI API 无交叉编译 MinGW 对我来说似乎是最好的选择 我过去已经使用过 32 位版本 至于 64 位 你能告诉我以下版本之间的主要区别吗 明
  • CSS:如何仅在支持悬停的设备上允许悬停状态?

    我一直在寻找一种方法来防止触摸设备 模拟 悬停事件 原因是您无法像在桌面上那样使用光标悬停在触摸设备上 这有时会影响用户体验 因为我在网上没有找到任何解决方案 所以我想在这里发布我自己的解决方案 我希望这会对某人有所帮助 我实现了仅将鼠标悬
  • cURL 从 FTPS 站点下载多个文件

    我正在使用 cURL 第一次使用它 从命令行从 ftps 站点下载文件 这就是我需要做的 从 ftps 站点下载与特定文件名匹配的多个文件 例如Filename csv 1998 zip所以我需要下载所有具有名称的文件Filename cs
  • Xcode 单元测试:Xcode 不会在断点处停止

    使用 Xcode 6 3 Beta 2 进行单元测试我遇到以下问题 当我进行单元测试时 单元测试模块中的断点可以工作 但被测试代码中的中断代码不会被忽略 有任何想法吗 我遇到了同样的问题 原因是方案设置 1 编辑您的方案 2 在左侧面板中选
  • 仅在node_modules中跳过库检查

    关于禁用错误输入中的错误有几个问题node modules e g this one https stackoverflow com questions 49906424 rxjs5 typescript typings fail 4991
  • jQuery UI 抖动 - 填充消失

    我遇到了这个小问题 我的包装纸里有一个盒子 我想来回摇晃它 效果很好 但是当我添加填充时 box动画打开时 填充会消失 这 box还有一个box sizing border box所以填充不会影响盒子的大小 如果我删除box sizing
  • 重定向而不更改 URL Apache

    我想将一个 URL 重定向到另一个 URL 而不更改浏览器 URL www example com abc xml 应重定向到 www example com abc xyz index htm file 1 但浏览器应该显示 www ex
  • 暂停代码执行但让 Excel 工作

    我正在制作一个宏 我想做以下事情 打开一个文件 等待文件填满数据 该文件使用单元格公式从外部数据库下载数据 下载大约需要15秒 20 秒后检查是否所有内容都已下载 如果没有 请再等待 10 秒 总共等待最多一分钟 如果所有内容都已下载 请存
  • Android ViewPager setCurrentItem 在 onResume 后不起作用

    我遇到了这个奇怪的问题ViewPager s setCurrentItem position false 工作得很好 然后我切换到另一个活动 在我回到第一个活动后 ViewPager总是以第一个项目结束 尽管我已经添加了setCurrent