https://employment.en-japan.com/engineerhub/entry/2017/06/23/110000
↑上記サイトに従ってタイマーアプリを作ろうと思ったのですが、「Unresolved reference: Button」「Unresolved reference: Text View」のエラーが発生しアプリをビルドすることができません。
エラー情報の詳細には「This inspection reports findViewById calls with type casts which can be converted to findViewById with a type parameter from Android 8.0(API level 26)」とかいてありました。
自分でいろいろ調べてみて「kotlinx.android.synthetic.main.activity_main.*」をインポートすれば直ると思ったのですが、「Unused import directive」と表示されるだけで問題解決とはなりませんでした。
私はKotlin初心者なので何がなにやらサッパリ分からなくて困っております。どなたか助言をお願い致します。
Kotlin
1package com.example.stopwatch 2 3 4import android.support.v7.app.AppCompatActivity 5import android.os.Bundle 6import android.os.Handler 7 8 9class MainActivity : AppCompatActivity() { 10 11 val handler = Handler() 12 var timeValue = 0 13 14 override fun onCreate(savedInstanceState: Bundle?) { 15 super.onCreate(savedInstanceState) 16 setContentView(R.layout.activity_main) 17 // View要素を変数に代入(配置したビュー要素にアクセス) 18 19 val timeText = findViewById(R.id.timeText) as TextView 20 val startButton = findViewById(R.id.start) as Button 21 val stopButton = findViewById(R.id.stop) as Button 22 val resetButton = findViewById(R.id.reset) as Button 23 24 val runnable = object : Runnable { 25 override fun run() { 26 timeValue++ 27 28 timeToText(timeValue)?.let { 29 timeText.text = it 30 } 31 handler.postDelayed(this, 1000) 32 } 33 } 34 35 startButton.setOnClickListener { 36 handler.post(runnable) 37 } 38 39 stopButton.setOnClickListener { 40 handler.removeCallbacks(runnable) 41 } 42 43 resetButton.setOnClickListener { 44 handler.removeCallbacks(runnable) 45 timeValue = 0 46 timeToText()?.let { 47 timeText.text = it 48 } 49 } 50 } 51 52 53 private fun timeToText(time: Int = 0): String? { 54 return if (time < 0) { 55 null 56 } else if (time == 0) { 57 "00:00:00" 58 } else { 59 val h = time / 3600 60 val m = time % 3600 / 60 61 val s = time % 60 62 "%1$02d:%2$02d:%3$02d".format(h, m, s) 63 } 64 } 65} 66