android-studio - android studio kotlin 将选择保存到临时数组列表中,然后访问临时数组列表
问题描述
我是安卓工作室的新手。
有人可以给我一个例子,如何将选择保存到临时数组列表,然后从临时数组列表中再次选择?
例如,屏幕两侧有 2 张图像可供选择。一旦我选择了其中一个,该图像就会保存到临时数组列表中。
但是,当我运行它时,它给了我试图访问临时数组的空指针异常。
我的猜测是因为它们在 oncreate 方法中。我该如何解决这个问题?谢谢!!
var list = mutableListOf(R.drawable.img1,R.drawable.img2,R.drawable.img3,R.drawable.img4)
var temp: MutableList<Int> = ArrayList()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.game)
imageView1.setImageResource(list[0])
imageView2.setImageResource(list[1])
imageView1.setOnClickListener{
temp.add(list[0])
}
imageView2.setOnClickListener{
temp.add(list[0])
}
imageView1.setImageResource(list[2])
imageView2.setImageResource(list[3])
imageView1.setOnClickListener{
temp.add(list[1])
}
imageView2.setOnClickListener{
temp.add(list[1])
}
imageView1.setImageResource(temp[0]) // error here
imageView2.setImageResource(temp[1])
imageView1.setOnClickListener{
textView.setText("Right Won")
}
imageView2.setOnClickListener{
textView.setText("Left Won")
}
}
解决方案
创建Activity
时,它会从上到下运行该代码。您设置了单击侦听器,当用户单击它们时将添加项目,但这在完成运行temp
之前不会发生。onCreate
因此,当您到达错误的那一行时,几纳秒后,您正在尝试访问其中的内容,temp
但它是空的,对吧?
您在底部的所有代码看起来都应该响应用户单击某些内容而运行,而不是在第Activity
一次创建时运行。你应该把它放在一个单独的函数中,调用类似的东西checkResult
,然后从你的点击侦听器中调用它,以在用户点击某些东西后检查结果!
推荐阅读
- javascript - 从 JavaScript 向节点服务器发送 HTTP POST 请求时正文为空
- javascript - Threes.js Raycaster 不与自定义顶点着色器相交
- python - Pandas 创建具有按时间戳排序的累积链接历史记录的列
- html - 动作伪类悬停不按程序旋转 div
- python - 如何从对 Django-restful-framework 的请求中获取多个值
- javascript - 在 iframe 中嵌入 django 登录
- spring-boot - 如何配置 SpringBoot ObjectMapper
- c++ - CMake Vscode无法调试构建工作正常但调试有问题
- python - 如何确定回调中的python范围
- android - 是否可以在android中添加虚拟相机?