ncArr = arrayOfNulls(9)
Тип ncArr
будет Array<ImageButton?>
ncArr[0] = findViewById(R.id.nc0) as ImageButton
Вы используете небезопасный оператор приведения as
, поскольку оператор приведения вызывает исключение, если приведение невозможно. Таким образом, мы называем это небезопасным. Что будет, если
findViewById(R.id.nc0) as ImageButton
return null
, тогда null
не может присвоить ImageButton
, это вызовет исключение и приведет к аварийному завершению вашего приложения.
Чтобы избежать вышеуказанной ошибки, вы можете использовать
ncArr[0] = findViewById(R.id.nc0) as ImageButton?
или с использованием оператора безопасного приведения as?
ncArr[0] = findViewById(R.id.nc0) as? ImageButton
Не забудьте подать заявку на ncArr[0]
до ncArr[8]
.
Обновление : По вашему запросу вы можете использовать это решение:
lateinit var ncArr: Array<ImageButton>
lateinit var xBitmap: Bitmap
lateinit var oBitmap: Bitmap
lateinit var intArr: IntArray
lateinit var btnStartGame: Button
lateinit var btnMenu: Button
var stop: Boolean = false
var gameMode: Int = 0
var umove: Int = 0
override fun onCreate(savedInstanceState: Bundle?) {
super.onStart()
setContentView(R.layout.activity_game)
ncArr = arrayOf(
findViewById<ImageButton>(R.id.nc0).apply{setOnClickListener(this@GameActivity)},
findViewById<ImageButton>(R.id.nc1).apply{setOnClickListener(this@GameActivity)},
findViewById<ImageButton>(R.id.nc2).apply{setOnClickListener(this@GameActivity)},
findViewById<ImageButton>(R.id.nc3).apply{setOnClickListener(this@GameActivity)},
findViewById<ImageButton>(R.id.nc4).apply{setOnClickListener(this@GameActivity)},
findViewById<ImageButton>(R.id.nc5).apply{setOnClickListener(this@GameActivity)},
findViewById<ImageButton>(R.id.nc6).apply{setOnClickListener(this@GameActivity)},
findViewById<ImageButton>(R.id.nc7).apply{setOnClickListener(this@GameActivity)},
findViewById<ImageButton>(R.id.nc8).apply{setOnClickListener(this@GameActivity)}
)
xBitmap = BitmapFactory.decodeResource(resources, R.drawable.x)
oBitmap = BitmapFactory.decodeResource(resources, R.drawable.o)
// Your code here
...
}