android - Kotlin 数组中的所有项始终包含最后一项
问题描述
我正在尝试用我的原始文件夹中的文件填充一个数组。然后我在该数组中选择一个随机插槽并使用它来播放该文件。
但是当我这样做时,每个插槽似乎都包含数组中的最终视频。我不确定这是什么原因...
var videos = Array(5){R.raw.c0; R.raw.c1; R.raw.c2; R.raw.c3; R.raw.c4};
videoView.setVideoPath("android.resource://" + getPackageName() + "/" + videos[Random.nextInt(0, 4)])
videoView.requestFocus()
videoView.start()
解决方案
您正在错误地初始化数组。
后面的{...}
块Array(5)
实际上是一个 lambda,它接受一个整数并返回数组中该索引的内容。分号(而不是逗号)表示 , 等中的每一个R.raw.c0
都R.raw.c1
只是一个不做任何事情的语句。由于R.raw.c4
是该块中的最后一条语句,因此它将所有五个索引都设置为该值。
你可能的意思是:
val videos = intArrayOf(R.raw.c0, R.raw.c1, R.raw.c2, R.raw.c3, R.raw.c4)
注意用逗号替换分号。我也切换var
到 a val
,因为你似乎没有改变它。
推荐阅读
- google-cloud-platform - 在 GCP 人脸检测中,我们应该假设哪个轴是测量侧倾角的轴?
- php - 如何确定 infusionsoft 联系人是否具有特定的标签 ID
- c++ - What is the best way to read a structure from a binary file containing IP header fragments?
- javascript - 使用 jest 运行测试时如何修复“测试套件无法运行”
- typescript - 如何在joint.d.ts、jointjs中扩展命名空间
- docker - gunicorn:错误:在 Docker 中运行烧瓶应用程序时无法识别的参数
- vue.js - 忽略未定义的道具
- jboss-developer-studio - Developer Studio 12.0.0.GA 安装后无法启动
- git - 如何让 CMake 的 ExternalProject_Add 在 Visual Studio 中工作(git-submodule 问题)?
- cassandra - 在 Cassandra 中每次作业运行时查找大约 40k 条记录和 1.5 亿条记录?