少し詰まった所があったのでメモしときます。
・タイマー処理内でビューを更新する場合ハンドラー使わないとダメっぽい。
ビルドは通るけどすぐ落ちる
logは出せるみたいビュー更新はNG
MainActivity.kt
package com.example.wifiautoswitching
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.Handler
import android.widget.TextView
import java.util.*
import kotlin.concurrent.schedule
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val messageView: TextView = findViewById(R.id.textView)
//val mHandler = Handler()
var x = 0
var timerCallback1: TimerTask.() -> Unit = {
var str = Integer.toString(x)
//mHandler.post{messageView.text = str}
messageView.text = str
System.out.println(str)
x++
//this.cancel()
}
Timer().schedule(0, 1000, timerCallback1)
}
}
これでビュー更新ができる
MainActivity.kt
package com.example.wifiautoswitching
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.Handler
import android.widget.TextView
import java.util.*
import kotlin.concurrent.schedule
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val messageView: TextView = findViewById(R.id.textView)
val mHandler = Handler()
var x = 0
var timerCallback1: TimerTask.() -> Unit = {
var str = Integer.toString(x)
mHandler.post{messageView.text = str}
//messageView.text = str
System.out.println(str)
x++
//this.cancel()
}
Timer().schedule(0, 1000, timerCallback1)
}
}