当前线程必须有一个循环器
The current thread must have a looper
在这里,我试图在特定时间段内添加 main_layout 的视图,为此我写了这个
main_layout.addView(linearLayout)
Handler(Looper.getMainLooper()).post(Runnable {
val timer = Timer()
timer.schedule(object : TimerTask() {
override fun run() {
main_layout.removeView(imageView)
timer.cancel()
}
}, 8000)
})
但应用程序因错误而崩溃:
java.lang.IllegalStateException: The current thread must have a looper!
请告诉我,我还需要在这里做什么。
我已经通过在处理程序中使用 HandleMessage()
方法解决了我的问题。
mainHandler = object :Handler(){
override fun handleMessage(msg: Message?) {
super.handleMessage(msg)
if (msg!!.what ==1){
removeView()
}
}
}
private fun removedata() {
main_layout.removeView(imageView)
}
此外,为了执行所需的操作,此方法发送所需的指令集
mainHandler.sendEmptyMessageDelayed(1,5000)
所以你可以看到要调用 remove(),它需要 1 来满足条件,第二个参数是我想要设置的所需延迟。
在这里,我试图在特定时间段内添加 main_layout 的视图,为此我写了这个
main_layout.addView(linearLayout)
Handler(Looper.getMainLooper()).post(Runnable {
val timer = Timer()
timer.schedule(object : TimerTask() {
override fun run() {
main_layout.removeView(imageView)
timer.cancel()
}
}, 8000)
})
但应用程序因错误而崩溃:
java.lang.IllegalStateException: The current thread must have a looper!
请告诉我,我还需要在这里做什么。
我已经通过在处理程序中使用 HandleMessage()
方法解决了我的问题。
mainHandler = object :Handler(){
override fun handleMessage(msg: Message?) {
super.handleMessage(msg)
if (msg!!.what ==1){
removeView()
}
}
}
private fun removedata() {
main_layout.removeView(imageView)
}
此外,为了执行所需的操作,此方法发送所需的指令集
mainHandler.sendEmptyMessageDelayed(1,5000)
所以你可以看到要调用 remove(),它需要 1 来满足条件,第二个参数是我想要设置的所需延迟。