首页 > 解决方案 > 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")
        }
}

标签: android-studiokotlin

解决方案


创建Activity时,它会从上到下运行该代码。您设置了单击侦听器,当用户单击它们时将添加项目,但这在完成运行temp之前不会发生。onCreate

因此,当您到达错误的那一行时,几纳秒后,您正在尝试访问其中的内容,temp但它是空的,对吧?

您在底部的所有代码看起来都应该响应用户单击某些内容而运行,而不是在第Activity一次创建时运行。你应该把它放在一个单独的函数中,调用类似的东西checkResult,然后从你的点击侦听器中调用它,以在用户点击某些东西后检查结果!


推荐阅读